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
它说
日历不支持字符串表示的日期时间 系统.全球化.公历.
我看不出有什么问题。
月份似乎是 20。没有第 20 个月。正如评论所表明的那样,您可能混淆了日和月。
字符串应为:
string dateToCheck = "2013-10-20 00:00";
在您的日期格式中交换月份和日期,如果您分别对月和日使用单个M
和d
也会更好,因为它将同时占个位数和两位数的月/日。(您也可以为小时(单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);