2011-01-15 26 views
0

我有HH:mm:ss從數據庫HH是超過100. 我有這樣的數據約3行。以下有關日期時間的代碼真的有效嗎?

我想計算HH:mm:ss中的總節目。

所以,我把HH:mm:ss分成了第二個,我獲得了第二個。我的工作就是這樣。

TimeSpan t = TimeSpan.FromSeconds(TTTot); 
string answer=""; 
answer = string.Format("{0:D2}:{1:D2}:{2:D2}", t.Hours, t.Minutes, t.Seconds); 
answer = string.Format("{0:D2}-{1:D2}:{2:D2}:{3:D2}", t.Days, t.Hours, t.Minutes, t.Seconds);  
answer = string.Format("{0:D5}:{1:D2}:{2:D2}",t.TotalHours, t.Minutes, t.Seconds); 

答案的第一行是我的原始代碼。我只看到了大約15個小時,而總價值約爲130。

所以我升級到第二行的答案,一起顯示一天。這樣可行。

但是,我想顯示總小時數。所以我修改代碼以第三行,我得到的異常如

Invalid format exception 

不知如何扭曲得到我想要的結果。 HH:mm:ss和HH可能有百位數值。

回答

3

這個MSDN Library page是非常相關的。它說,這對d或d格式說明:

的「d」(或十進制)格式說明 將數字轉換的 十進制數字(0-9),由 減號作爲前綴字符串如果這個數字是負數。 此格式僅支持 整數類型

這是一個問題,TimeSpan.Hours返回價值,而不是整數值,像TimeSpan.Minutes一樣。

answer = string.Format("{0:D5}:{1:D2}:{2:D2}", 
    (int)t.TotalHours, t.Minutes, t.Seconds); 
:您可以通過 截斷(不四捨五入)的雙重價值,這樣的解決這個問題