2012-07-20 198 views
15

我使用.NET 3.5在C#中編譯,並試圖將TimeSpan轉換爲字符串並格式化字符串。我想用如何在.NET 4.0之前將TimeSpan格式化爲字符串

myString = myTimeSpan.ToString("c");

但是TimeSpan.ToString方法並不需要一個格式字符串作爲參數,直到.NET 4.0和我使用.NET 3.5。

那你怎麼會將TimeSpan格式化爲一個字符串呢?我的最終目標是以hh:mm:ss的格式顯示TimeSpan,但我目前正在收到hh:mm:ss:fffffff

我一直在使用

myString = string.Format("{0:hh:mm:ss}", myTimeSpan);

但的String.format只是格式化我DateTime和傳遞不同格式字符串試圖格式化時間跨度時不起作用嘗試。

+4

@約翰:這不是一個解決方案。 – 2012-07-20 12:09:53

+0

此鏈接可能會幫助你:http://stackoverflow.com/questions/840120/timespan-formatting – 2012-07-20 12:12:05

+1

http://stackoverflow.com/a/574894/1028323回答你的問題。 – Alex 2012-07-20 12:16:41

回答

18

的一種方法是:

TimeSpan ts = DateTime.Now - DateTime.Now.AddHours(-10); 
Console.WriteLine(string.Format("{0:00}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds)); 

結果會是這樣的:

09:59:59 

編輯:

或者你可以嘗試:

TimeSpan ts = DateTime.Now - DateTime.Now.AddHours(-10); 
DateTime mydate = new DateTime(ts.Ticks); 
Console.WriteLine(mydate.ToString(("hh:mm:ss"))); 

輸出會:

09:59:59 
+2

您可能想使用'「{0}:{1:00}:{2:00}」'...... – Joey 2012-07-20 12:15:52

+0

@Joey,完美,修改我的答案 – Habib 2012-07-20 12:21:12

0

更好的是24 * ts.Days + ts.Hours than ts.TotalHours。 比較:

var ts = TimeSpan.FromHours(23.9); 
Console.WriteLine(ts); 
Console.WriteLine("{0:00}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds); 
Console.WriteLine("{0}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds); 
Console.WriteLine("{0}:{1:00}:{2:00}", 24*ts.Days+ts.Hours, ts.Minutes, ts.Seconds); 
相關問題