2013-10-25 23 views
2

我需要從大於24小時的時間跨度格式的字符串中獲取秒總數no。下面是代碼剪斷我用如何從時間格式大於24小時的字符串中使用C#得到總計沒有秒數

static void Main(string[] args) 
    { 
     string s = "24:55:00.00"; 
     double d = (int)TimeSpan.Parse(s).TotalSeconds; 
     Console.WriteLine(d);    
    } 

當我跑上面得到異常發生OverflowException了未處理。當我使用不到24小時的字符串像23:55:05.09那樣說。代碼工作正常。是它的C#真正的限制還是我失去了一些東西

感謝

回答

1

你不能使用時間跨度超過23小時,59分鐘59秒99毫秒,如果你想進入時間你可以使用這個代碼在24小時內跨越:

string s = "24:55:00.00"; 
string hoursS = s.Split(':')[0]; 
double hours = int.Parse(hoursS); 

double totalSeconds = hours*3600; 

s = s.Substring(hoursS.Length); 
s = "00" + s; 
double d = (int)TimeSpan.Parse(s).TotalSeconds; 

totalSeconds += d; 
Console.WriteLine(totalSeconds); 

如果你想超過60分,秒來使用,你的字符串也可以毫秒級地改進,根據我提供的代碼可以輕鬆地添加它。

+1

如果輸入字符串是「100:55:00.00」,該怎麼辦? – Default

+0

@默認改進,thx。 – Tafari

+1

我認爲上面的代碼會產生122:02:00.00的錯誤結果。因爲我們在s = s.substring(2)中硬編碼了值2。更好的主意將得到字符數以小時計S並使用上述語句中的值 – RamKumar

6

以小時爲單位不能使用超過23小時以上

發生OverflowException s表示一個數小於 TimeSpan.MinValue或大於TimeSpan.MaxValue。 - 或 - 至少有一天,小時,分鐘或秒組件位於其有效範圍之外。

看到here at MSDN

最大小時23分鐘60等

改變你的字符串:

1:0:55:00.00 

這將是等於24h55m

2

要能夠解析您必須使用的24小時55分鐘的時間跨度的字符串表示這個字符串:

 
1.0:55:00.00 

如果您不確定有關TimeSpan使用的字符串表示可以進行反向轉換:

(TimeSpan.FromDays(1) + TimeSpan.FromMinutes(55)).ToString() 

這將返回字符串:

 
1.0:55:00 
相關問題