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

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

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

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

试试这个:

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

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

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

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

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

结果是:

 06/13/2012 00:00:00 

因此,相反,人们可以假设使用不变文化解析日期可以正常工作:

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

……确实如此。

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

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

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