转换日期时间引发错误:字符串未被识别为“06-13-2012”的有效日期时间
本文关键字:时间 06-13-2012 识别 有效日期 日期 错误 字符串 转换 | 更新日期: 2023-09-27 18:37:11
我正在将一个日期插入到我的数据库中,该值来自:
s.theDate = Convert.ToDateTime("06-13-2012");
我收到错误"字符串未被识别为有效的日期时间"。我该如何解决此问题?
试试这个:
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)
使用 InvariantCulture
查看DateTime
类型上ToString
的行为,如下所示:
new DateTime(2012, 6, 13).ToString(CultureInfo.InvariantCulture)
结果在:
06/13/2012 00:00:00
因此,相反,可以假设使用固定区域性解析日期可以正常工作:
Convert.ToDateTime("06-13-2012", CultureInfo.InvariantCulture)
。确实如此。
话虽如此,假设日期/时间格式有点危险。 我想说的是,在考虑 UI 时,您希望格式特定于区域性。 否则,您可能希望格式与区域性无关。 尽管Microsoft采用 MM/dd/yyyy 作为与文化无关的格式,但它是一种模棱两可的格式,我不想在其上构建大型系统。
只需按照已经建议的方式使用ParseExact
或使用第二个参数填充Convert.ToDateTime
:
Convert.ToDateTime("06-13-2012", new DateTimeFormatInfo{FullDateTimePattern = "MM-dd-yyyy"});
有一个称为ISO 8601的全球标准,您可以(imo应该)使用。使用此标准,这就是您最终会得到的。
Convert.ToDateTime("2012-06-03");