任何人都知道为什么会失败?我能够使用ParseExact来解决它,但我想理解为什么它会失败。
DateTime test = DateTime.Parse("Dec 24 17:45");
日期< " 12月24日"工作得很好。日期> = 12月24日因此错误失败:
未处理的类型' System.FormatException'发生在mscorlib.dll中 附加信息:日历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
}
}
答案 0 :(得分:9)
日期< “12月24日”工作正常。日期> = 12月24日因此错误失败
DateTime.Parse
使用standard formats解析日期以及日期&gt; = 24失败的原因是它正在考虑该部分作为小时部分而不是日期部分< / strong>如你所愿。
由于允许的小时部分可能介于0到23之间,因此适用于那些日期。 (它不被视为一天的部分)
它也忽略Dec
部分并考虑该部分的当前日期。
考虑以下示例:
DateTime test = DateTime.Parse("Dec 22 17:45");
它返回:
test = {23/02/2015 10:17:00 PM}
查看时间部分设置为22:17或10:17 PM
答案 1 :(得分:-2)
您传递的DateTime格式无效。我认为问题是你没有提供一年的日期部分。以下是已接受的DateTime的示例:
DateTime time = DateTime.Parse("Dec 24 2015 17:45");