objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
.ToString("MM/dd/yyyy"));
哪里txtTourStartDate.Text="16/08/2012"
。
我已经搜索并阅读了所有与此相关的帖子。
objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
.ToString("MM/dd/yyyy"));
哪里txtTourStartDate.Text="16/08/2012"
。
我已经搜索并阅读了所有与此相关的帖子。
在自定义日期格式字符串中,/
表示特定于文化的日期分隔符,而不是文字字符/
。因此,您的代码的结果取决于用户(或服务器)的本地化设置。
要使您的代码独立于特定于文化的设置,您有两种选择:
明确指定使用斜杠作为日期分隔符的区域性,例如
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture)
或转义字符,例如
DateTime.ParseExact(txtTourStartDate.Text, @"dd\/MM\/yyyy", null)
(注意@
和\
)。
两者都应该产生预期的结果。
这就足够了:
objTour.tourStartDate = DateTime.ParseExact(txtTourStartDate.Text,
"dd/MM/yyyy",
CultureInfo.InvariantCulture);
您的原始代码有效,尽管您正在进行许多不必要的转换。(DateTime -> ToString -> ToDateTime),真正的问题是InvariantCulture
. 由于您正在null
通过CultureInfo
尝试CultureInfo.InvariantCulture
。
您的原始代码:
objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)
.ToString("MM/dd/yyyy"));
更好的可能是:
objTour.tourStartDate =
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)