objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
.ToString("MM/dd/yyyy"));
其中txtTourStartDate.Text="16/08/2012"
。
我搜索并阅读了与此相关的所有帖子。
答案 0 :(得分:4)
在custom date format string中,/
表示特定于文化的日期分隔符,而不是文字字符/
。因此,代码的结果取决于用户(或服务器)的本地化设置。
要使代码独立于特定于文化的设置,您有两种选择:
明确指定使用斜杠作为日期分隔符的区域性,例如
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture)
或逃避角色,例如
DateTime.ParseExact(txtTourStartDate.Text, @"dd\/MM\/yyyy", null)
(请注意@
和 \
)。
两者都应该产生预期的结果。
答案 1 :(得分:2)
这就足够了:
objTour.tourStartDate = DateTime.ParseExact(txtTourStartDate.Text,
"dd/MM/yyyy",
CultureInfo.InvariantCulture);
答案 2 :(得分:2)
您的原始代码有效,但您正在进行大量不必要的转换。 (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)