DateTime.ParseExact fails

本文关键字:fails ParseExact DateTime | 更新日期: 2023-09-27 18:36:19

以下行抛出 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.ParseExact fails

月份似乎是 20。没有第 20 个月。正如评论所表明的那样,您可能混淆了日和月。

字符串应为:

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

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

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

这将处理以下天数: 02,2,20

将格式从

"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.

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

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

或者这个:

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

这样做,请注意我已经交换了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);