3

ループやカスタムロジックを使用せずに、TimeSpanを経過時間として簡単に表示する方法が欲しいです

hours : minutes : seconds

適用される.NET組み込みまたはフォーマット文字列が必要であると確信していますが、それを見つけることができません。

4

5 に答える 5

3

何が問題なの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);

きれいではありませんが、動作します。

于 2010-05-28T22:46:34.337 に答える
3

質問自体は重複していませんが、答えはあなたが探しているものだと思います-String.Formatを使用したカスタムフォーマットのタイムスパン。ソリューションをさらに単純化するために、その機能をTimespanの拡張メソッドにまとめることができます。

于 2010-05-28T22:48:24.800 に答える
1

次を使用できます。

TimeSpan t = TimeSpan.FromSeconds(999);
string s = t.ToString("c");  // s = "00:16:39"

カスタム形式については、このMSDNページを参照してください。

于 2010-05-28T22:53:19.250 に答える
0

カスタムフォーマットに使用する方法は次のとおりです。

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と互換性があり、ループは含まれていません。

于 2010-05-28T23:09:08.793 に答える
0

これを使って: .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"
于 2015-10-30T17:59:33.420 に答える