2016-09-30 36 views
0

爲什麼這段代碼是收到錯誤對於喜歡「8:16 AM」輸入:爲什麼DateTime.TryParse對於簡單輸入是接收錯誤?

 string time = Console.ReadLine(); 
     DateTime outValue = DateTime.MinValue; 

     bool error = DateTime.TryParseExact(time, "HH:mmtt" /*"hh:mmtt"*/, CultureInfo.InvariantCulture, DateTimeStyles.None, out outValue); 

     Console.WriteLine(error); 
     Console.WriteLine(outValue); 
     Console.Read(); 

我應該以接受這樣的輸入「8:16」,並將其轉換爲DateTime對象設置?

+2

08:16 AM也許? – Natrium

+0

這是工作,但我收到API時間格式8:16 AM。 好的,我可以在前面填寫缺失的0。這不是什麼大不了的事情,但我猜8:16 AM也可以被msdn接受。 感謝您的回答。祝你有個美好的一天:) –

+0

好的,我自己定義了格式。我的身邊並不那麼聰明。我會填寫這樣一個0.謝謝。 –

回答

5

您已使用HH,它需要2位數的小時。您可以通過08:16AM或將您的HH更改爲H

活生生的例子:http://rextester.com/IPNS3820

+0

是的,你是對的,我自己定義了格式。我要填寫這樣一個0. –

1

它是由預期兩位數小時引起的。

如果缺失,可以添加前導零。

string time = Console.ReadLine(); 
    DateTime outValue = DateTime.MinValue; 
    if (time.Length == 6) 
     time = "0" + time; 
    bool error = DateTime.TryParseExact(time, "HH:mmtt" /*"hh:mmtt"*/, CultureInfo.InvariantCulture, DateTimeStyles.None, out outValue); 

    Console.WriteLine(error); 
    Console.WriteLine(outValue); 
    Console.Read(); 

但它更好地與H:mmtt模板去了Jamiec

+0

是的,你說得對,我自己定義了格式。我將填補這樣一個0。 –

1

這happends因爲你寫的HH爲指出:MMTT。 試試這個:

bool error = DateTime.TryParseExact(time, "H:mm:tt" /*"h:mm:tt"*/, 
CultureInfo.InvariantCulture, DateTimeStyles.None, out outValue); 
相關問題