2013-10-21 66 views
4

以下行將引發FormatException。DateTime.ParseExact失敗

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不支持。

我看不出有什麼問題。

+8

你有你的日和月混在一起。沒有20個月。 – Ceres

+1

你是否試圖解析20個月? –

回答

5

本月似乎是20.沒有20個月。正如評論所暗示的,你可能混淆了日日。

該字符串應該是:

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

謝謝。我懷疑是這樣的。 –

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

0

日曆中沒有第20個月。修改代碼爲:

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

或者這樣:

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

在你的日期格式交換月份和日期,如果使用單Md的月和日分別,因爲它會佔到也是它更好對於單位和雙位數月/日。 (你也可以做到這一點對小時(單H))使用以下格式:

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

這將處理般的日子:02,2,20

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);