ループやカスタムロジックを使用せずに、TimeSpanを経過時間として簡単に表示する方法が欲しいです
。
hours : minutes : seconds
適用される.NET組み込みまたはフォーマット文字列が必要であると確信していますが、それを見つけることができません。
何が問題なのTimeSpan.ToString()
ですか?
編集:DateTimeを中間フォーマットストアとして使用できます。
TimeSpan a = new TimeSpan(1, 45, 33);
string s = string.Format("{0:H:mm:ss}", new DateTime(a.Ticks));
Console.WriteLine(s);
きれいではありませんが、動作します。
質問自体は重複していませんが、答えはあなたが探しているものだと思います-String.Formatを使用したカスタムフォーマットのタイムスパン。ソリューションをさらに単純化するために、その機能をTimespanの拡張メソッドにまとめることができます。
次を使用できます。
TimeSpan t = TimeSpan.FromSeconds(999);
string s = t.ToString("c"); // s = "00:16:39"
カスタム形式については、このMSDNページを参照してください。
カスタムフォーマットに使用する方法は次のとおりです。
TimeSpan Elapsed = TimeSpan.FromSeconds(5025);
string Formatted = String.Format("{0:0}:{1:00}:{2:00}",
Math.Floor(Elapsed.TotalHours), Elapsed.Minutes, Elapsed.Seconds);
// result: "1:23:45"
それが「カスタムロジックなし」と見なされるかどうかはわかりませんが、.NET 3.5と互換性があり、ループは含まれていません。
これを使って: .ToString()
MSDNによると、これが表示するデフォルトの形式[-][d.]hh:mm:ss[.fffffff]
はです。これは、TimeSpan値を経過時間として表示する最も速くて簡単な方法です(例:1:45:33)。
日、秒の小数部、または負の値がある場合は、MSDNで説明されているカスタムフォーマット文字列を使用してください。これは次のようになります.ToString(@"hh\:mm\:ss")
例:
TimeSpan elapsed = new TimeSpan(0, 1, 45, 33);
Console.WriteLine(elapsed.ToString()); //outputs: "1:45:33"
Console.WriteLine(elapsed.ToString(@"hh\:mm\:ss"));//outputs: "1:45:33"