2017-02-20 39 views
0

我很確定我正在犯一些非常愚蠢的錯誤,但這讓我瘋狂。DateTime.ParseExact拋出異常

我努力做到以下幾點:

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture); 

但我不斷收到以下異常:「字符串未被識別爲有效的DateTime。」

我曾嘗試: 「M/DD/YYYY HH:MM:SS TT」 「MM '/' DD '/' YYYY HH:MM:SS TT」 「M '/' DD '/' yyyy HH:mm:ss tt「

但到目前爲止沒有任何工作......任何幫助,將不勝感激。

+0

它爲我,我得到的輸出24/08/2016 12 :00:00 – imsome1

+0

將格式字符串更改爲:'「MM/dd/yyyy hh:mm:ss tt」' – Pikoh

回答

7

HH正在尋找一個24小時格式,但你也傳入AM並指定tt - 分析器無法面對這一切。您需要可以找一個12小時的基於字符串:使用hh

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 

或刪除AM/tt一部分。

+0

記住這個的好方法是'hh'是「小時數」,'HH'是「大時數」。 –

+0

我知道這是小事......謝謝! – Talon

2

對於12小時格式使用hh,而不是對於24小時格式的HH。此信息已在AM/PM中,不能由該方法處理兩次。

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
+0

我知道這是個小東西......謝謝! – Talon

1

你需要,因爲HH使用24小時格式使用hh而不是HH,你也在形式指定ampm

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
+0

我知道這是小事......謝謝! – Talon