DateTime.ParseExact失败

时间:2013-10-21 12:28:15

标签: c# datetime

以下行抛出FormatException。

DateTime dateResult;
System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture;
string dateFormat =  "yyyy-MM-dd HH:mm";
string dateToCheck = "2013-20-10 00:00";

dateResult = DateTime.ParseExact(dateToCheck, dateFormat, provider); // fails

它说

  

日历中不支持字符串表示的DateTime   System.Globalization.GregorianCalendar。

我看不出有什么不对。

5 个答案:

答案 0 :(得分:5)

月似乎是20.没有20个月。正如评论所暗示的那样,你可能每天都会混淆。

字符串应为:

string dateToCheck = "2013-10-20 00:00";

答案 1 :(得分:1)

在您的日期格式中,交换月份和日期,如果您分别使用单个Md分别为月和日,那么它也会更好,因为它将同时考虑单个和两位数的月/日。 (您也可以为小时(单H)执行此操作)使用以下格式:

string dateFormat =  "yyyy-d-M HH:mm";

这将处理以下日期:02,2,20

答案 2 :(得分:0)

更改格式
"yyyy-MM-dd HH:mm"

"yyyy-dd-MM HH:mm"

因为没有20.ht月。

string dateFormat = "yyyy-dd-MM HH:mm";
string dateToCheck = "2013-20-10 00:00";
DateTime dateResult = DateTime.ParseExact(dateToCheck, dateFormat, CultureInfo.InvariantCulture);
Console.WriteLine(dateResult);

这里有 DEMO

答案 3 :(得分:0)

日历中没有第20个月。将代码修改为:

...
string dateToCheck = "2013-10-20 00:00";
...

或者这个:

...
string dateFormat =  "yyyy-dd-MM HH:mm";
...

答案 4 :(得分:0)

这样做,注意我已经交换了dd和MM

DateTime dateResult;
System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture;
string dateFormat = "yyyy-dd-MM HH:mm";
string dateToCheck = "2013-20-10 00:00";
dateResult = DateTime.ParseExact(dateToCheck, dateFormat, provider);