我在我的数据库中插入一个日期,该值来自:
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)
查看使用 anToString
的DateTime
类型的行为InvariantCulture
,这是:
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"});
您可以(imo 应该)使用一个名为 ISO 8601 的全球标准。使用这个标准,这就是你最终的结果。
Convert.ToDateTime("2012-06-03");