2012-07-20 4 views
15

.NET 3.5を使用してC#でコンパイルしていて、TimeSpanを文字列に変換して文字列をフォーマットしようとしています。私はTimeSpan.ToStringメソッドは、.NET 4.0までの引数としてフォーマット文字列を取らないと、私は.NET 3.5を使用していますが.NET 4.0より前にTimeSpanを文字列にフォーマットする方法

myString = myTimeSpan.ToString("c");

を使用したいと思います。

どのようにして、TimeSpanを文字列としてフォーマットしますか?最終的な目標は、フォーマットhh:mm:ssでTimeSpanを表示することですが、現在はhh:mm:ss:fffffffを受信して​​います。

私は

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

を使用して試してみましたが、String.Formatのは私のDateTimeをフォーマットしたTimeSpanをフォーマットしようとすると、異なるフォーマット文字列が動作しません渡しています。

+4

@John:これは解決策ではありません。 –

+0

このリンクはあなたを助けてくれるかもしれません:http://stackoverflow.com/questions/840120/timespan-formatting –

+1

http://stackoverflow.com/a/574894/1028323あなたの質問に答えてください。 – Alex

答えて

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 

EDIT:

またはあなたが試すことができます:

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

+0

@Joey、完璧、私の答えを修正しました – Habib

0

ts.TotalHoursよりも24 * ts.Days + ts.Hoursです。 比較:

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); 
関連する問題