Convert.DateTime抛出错误:字符串未被识别为“06-13-2012”的有效日期时间

时间:2012-06-13 06:56:40

标签: c# datetime

我在我的数据库中插入一个日期,其值来自:

s.theDate = Convert.ToDateTime("06-13-2012");

我得到错误,“字符串未被识别为有效的DateTime”。我该如何解决这个问题?

5 个答案:

答案 0 :(得分:15)

试试这个:

DateTime.ParseExact("06-13-2012", "MM-dd-yyyy", System.Globalization.CultureInfo.InvariantCulture)

答案 1 :(得分:2)

s.theDate = DateTime.ParseExact("06-13-2012", "MM-dd-yyyy", System.Globalization.CultureInfo.InvariantCulture)

答案 2 :(得分:0)

只需使用已建议的ParseExact或使用第二个参数填充Convert.ToDateTime

Convert.ToDateTime("06-13-2012", new DateTimeFormatInfo{FullDateTimePattern = "MM-dd-yyyy"});

答案 3 :(得分:0)

使用ToString查看DateTime类型InvariantCulture的行为,

new DateTime(2012, 6, 13).ToString(CultureInfo.InvariantCulture)

结果:

06/13/2012 00:00:00

所以,相反,人们可以假设使用不变文化解析日期是有效的:

Convert.ToDateTime("06-13-2012", CultureInfo.InvariantCulture)

......确实如此。

话虽如此,假设日期/时间格式有点危险。我想说在考虑用户界面时,你希望格式是特定于文化的。否则,您希望格式与文化无关。尽管微软采用MM / dd / yyyy作为一种与文化无关的格式,但它是一种模糊的格式,这不是我想建立一个大型系统的东西。

答案 4 :(得分:0)

您可以(imo应该)使用名为ISO 8601的全球标准。使用此标准,这将是您最终的目标。

Convert.ToDateTime("2012-06-03");