7

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

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

我收到错误消息“字符串未被识别为有效的日期时间”。我该如何解决这个问题?

4

5 回答 5

17

试试这个:

DateTime.ParseExact("06-13-2012", "MM-dd-yyyy", System.Globalization.CultureInfo.InvariantCulture)
于 2012-06-13T06:59:58.417 回答
2
s.theDate = DateTime.ParseExact("06-13-2012", "MM-dd-yyyy", System.Globalization.CultureInfo.InvariantCulture)
于 2012-06-13T07:01:46.537 回答
1

查看使用 anToStringDateTime类型的行为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 作为与文化无关的格式,但它是一种模棱两可的格式,我不想在其上构建大型系统。

于 2012-06-13T07:26:36.810 回答
0

只需ParseExact按照已经建议的方式使用或填充Convert.ToDateTime第二个参数:

Convert.ToDateTime("06-13-2012", new DateTimeFormatInfo{FullDateTimePattern = "MM-dd-yyyy"});
于 2012-06-13T07:04:03.600 回答
0

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

Convert.ToDateTime("2012-06-03");
于 2012-06-13T07:29:43.230 回答