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");