【发布时间】:2015-02-23 18:49:34
【问题描述】:
有人知道为什么会失败吗?我能够使用 ParseExact 解决它,但我想了解它为什么会失败。
DateTime test = DateTime.Parse("Dec 24 17:45");
日期 = 12 月 24 日失败并出现此错误:
在 mscorlib.dll 中出现“System.FormatException”类型的未处理异常 附加信息:日历 System.Globalization.GregorianCalendar 不支持字符串表示的 DateTime。
编辑: 感谢 Habib 注意到即使我没有收到错误,这也不是我所期望的结果。因此,当不与受支持的格式一起使用时,请小心使用 DateTime.Parse!
这是我为解决此问题所做的。我只需要处理两种不同的格式。当前年份为“MMM dd HH:mm”,否则为“MMM dd yyyy”
if (!DateTime.TryParseExact(inDateTime, "MMM dd HH:mm", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces,out outDateTime))
{
if (!DateTime.TryParseExact(inDateTime, "MMM dd yyyy", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out outDateTime))
{
//Handle failure to Parse
}
}
【问题讨论】:
-
你能告诉我们你试图执行的确切代码吗?
-
这是个好问题。
-
@A.Abramov -- OP 包含了几乎所有需要的东西。
-
您可以看到您的字符串不是
Parse允许的“形式”之一。 msdn.microsoft.com/en-us/library/… -
@wsware 您应该显示与
ParseExact一起使用的代码,以便您问题的未来读者可以看到应该如何进行解析;)