C#DateTime.Parse错误

时间:2015-02-23 18:49:35

标签: c# datetime

任何人都知道为什么会失败?我能够使用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
    }
}

2 个答案:

答案 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");