以下行抛出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。
我看不出有什么不对。
答案 0 :(得分:5)
月似乎是20.没有20个月。正如评论所暗示的那样,你可能每天都会混淆。
字符串应为:
string dateToCheck = "2013-10-20 00:00";
答案 1 :(得分:1)
在您的日期格式中,交换月份和日期,如果您分别使用单个M
和d
分别为月和日,那么它也会更好,因为它将同时考虑单个和两位数的月/日。 (您也可以为小时(单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);