2010-01-13 56 views
3

我要格式化的時間跨度爲具有這樣的49小時格式34個MN 20秒Custome格式時間跨度與的String.Format

我用下面的字符串格式:

String.Format("{0:00}:{1:00}:{2:00}", theTimeSpan.TotalHours, theTimeSpan.Minutes, theTimeSpan.Seconds) 

它格式化入庫時間到這種格式49:34:20。我如何將hr mn sec添加到上面的String.Format中?或者有另一種簡單的方法?謝謝。

回答

6

這很簡單:

String.Format("{0:00} hr {1:00} mn {2:00} sec ", _ 
       Math.Truncate(theTimeSpan.TotalHours), _ 
       theTimeSpan.Minutes, theTimeSpan.Seconds) 

值得熟悉how string formatting works in .NET - 這是一個重要的課題。

不幸的是,TimeSpan目前不支持自定義格式字符串 - but it will as of .NET 4.0

+0

感謝您的答案和信息。 :D – Narazana 2010-01-13 17:10:15

+1

儘管最初的海報要求提供,但我認爲這種迴應存在一個錯誤。由於totalHours包含部分小時數作爲分數,因此00格式將ROUND UP並顯示「1小時37分鐘」,時間跨度僅爲37分鐘。所以我相信在TimeSpan.TotalHours周圍應該有一個Math.Truncate()。如果我是對的,那麼Jon Skeet應該給我一筆賞金;他有足夠的空間。 :) – Knox 2010-08-03 19:07:15

+0

好斑。定影。 – 2010-08-03 19:08:53