2013-01-22 68 views
5

我試圖解析以下格式英國字符串DateTime24/01/2013 22:00DateTime.ParseExact - 英國的日期和時間

不過,我不斷收到此錯誤:

String was not recognized as a valid DateTime.

CultureInfo.CurrentCulture返回 「en-GB」 這正確

這裏是我的代碼

[TestMethod] 
    public void TestDateTimeParse() 
    { 
     DateTime tester = DateTime.ParseExact("24/01/2013 22:00", "d/M/yyyy hh:mm", CultureInfo.CurrentCulture); 

     int hours = tester.Hour; 
     int minutes = tester.Minute; 

     Assert.IsTrue(true); 
    } 
+0

我不相信當你使用'ParseExact'時,文化差異很大。 –

回答

15

hh是12小時時鐘。您應該使用HH來代替。

DateTime.ParseExact("24/01/2013 22:00", 
        "d/M/yyyy HH:mm", // <-- here 
        CultureInfo.CurrentCulture) 
1

你的格式不對,試試這個:

DateTime tester = DateTime.ParseExact("24/01/2013 22:00", "dd/MM/yyyy HH:mm", CultureInfo.CurrentCulture); 
2

"hh"的小時,使用12小時的時鐘從01到12

"HH"的小時,使用從00 24小時時鐘到23

試試這樣;

public static void Main(string[] args) 
{ 
    DateTime tester = DateTime.ParseExact("24/01/2013 22:00", "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); 
} 

這是DEMO

你也可以從MSDN查看Custom Date and Time Format Strings

+1

這是正確的,但是_explain_爲什麼會很好。 (順便說一句,'dd'和'MM'不是嚴格要求的)。 – Oded

+0

@Oded你是對的,但你已經解釋了_why_的原因。因爲如果我也寫它,似乎是抄襲? (是啊'dd'和'MM'沒有必要,但是這在我看來比'd'和'M'更具可讀性) –

+0

我不知道複製,但試圖讓每個答案最好的可能不是一個有不好的目標,是嗎? – Oded

相關問題