2012-10-18 38 views
1

我想將字符串轉換爲日期時間。我收到一個錯誤This is not a valid datetime從字符串轉換爲日期時間在C#

我想要轉換的字符串和代碼如下。

string date1 = "9/13/2012 5:26:06 PM"; 
TimePart = DateTime.ParseExact(date1, "M/d/yyyy HH:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture); 
+0

您可能會發現有用的:則DateTime.ToString()模式(http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8 -F859AA20581F.htm) – Otiel

+0

http://stackoverflow.com/q/3025916/1731716這個鏈接可能會幫助你 –

回答

2

您需要使用小寫h

DateTime TimePart = DateTime.ParseExact(
           date1, 
           "M/d/yyyy h:mm:ss tt", 
           CultureInfo.InvariantCulture); 

Console.WriteLine(TimePart); // 09/13/2012 17:26:06 

大寫的 「H」 是24小時的時間,小寫字母 「H」 是12小時的時間與AM/PM。

6

我認爲它應該是M/dd/yyyy h:mm:ss tt在您的格式參數。

+0

不,即使這是行不通的。錯誤是字符串未被識別爲有效的日期時間。 –

+0

嘗試刪除第一個「H」。 –

+1

@ShamiC我剛剛更新了答案,因爲您已經添加了'tt',它不再是'24小時'格式了。所以把'HH'換成'hh' –

1

它看起來像HH不符合「5」。嘗試h

+0

這真的應該是一個評論 –

3

看起來你的格式確實是M/d/yyyy h:mm:ss tt。差異是h(12小時,只有需要的位數),而不是HH(24小時,前導0填充到2位數字)。

如果輸入格式可以改變,您應該使用DateTime.Parse來代替,以便您不必告訴它確切的格式。 ParseExact速度更快,並且要求它與指定的格式相匹配,這在您的演員陣容中可能更可取。

2

對於12小時制時鐘,您應該使用小寫字母h(因爲您有AM/PM代號)。

此外,您應該只使用一個h,因爲您沒有領先的0到幾小時,並且hh預計它。

格式字符串的作品:

"M/d/yyyy h:mm:ss tt" 
相關問題