2013-03-25 139 views
-1

我不確定這裏發生了什麼,但它會接受一些時間段,但不接受其他時間段。有人能告訴我一種方法來檢查這種格式99:59:59的時間跨度。TimeSpan不會解析某些字符串

//50:30:00 is bad 
//50:20:00 is good 

try 
{ 
    TimeSpan ts = new TimeSpan(); 
    ts = TimeSpan.Parse("50:30:00"); 
} 
catch //(Exception ex) 
{ 
    MessageBox.Show("bad time span"); 
} 
+0

'50:30:00'壞,'50:20:00'好?沒有意義。 – Raptor 2013-03-25 04:30:52

+0

[How to Parse string with hours to 24 to TimeSpan?](http://stackoverflow.com/questions/2728321/how-to-parse-string-with-hours-greater-than-24-to -timespan) – Raptor 2013-03-25 04:31:00

+0

我看到了,但我認爲這是一個錯誤,所以我決定發佈它。 – 2013-03-25 04:32:14

回答

6

缺省情況下,Timespan.Parse方法假定時間爲int格式Days:Hours:Minutes。由於一天不能超過24小時,因此當Hours分量大於24時會拋出。

我不得不承認我有點驚訝Timespan.Parse不會爲您進行轉換。我有一種預感,它與事實並不是所有的日子都是24小時都有關係。

+0

這並不能解釋爲什麼它會接受48:00:00或50:20:00。你能解釋一下嗎? – 2013-03-25 04:35:57

+3

確實如此。 '48:00:00'被解讀爲「48天,0小時,0分鐘」(合法)。 '50:20:00'被解讀爲「50天,20小時,0分鐘」(合法)。 '50:30:00'被解讀爲「50天,30小時,0分鐘」(不合法)。天不能有30個小時,所以它會拋出異常。 – 2013-03-25 04:38:04

+0

啊,謝謝你,我明白它現在的工作方式。我無法理解它。 – 2013-03-25 04:39:44