4

以下行将引发 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

它说

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

我看不出有什么问题。

4

5 回答 5

5

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

字符串应该是:

string dateToCheck = "2013-10-20 00:00";
于 2013-10-21T12:30:33.343 回答
1

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

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

这将处理这样的日子:02,2,20

于 2013-10-21T12:33:44.457 回答
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.

于 2013-10-21T12:30:47.540 回答
0

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

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

或这个:

...
string dateFormat =  "yyyy-dd-MM HH:mm";
...
于 2013-10-21T12:30:56.970 回答
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);
于 2013-10-21T12:35:46.047 回答