TimeSpan Ts = new TimeSpan(5, 4, 3, 2);
return Ts.ToString("?");
この形式を取得するには、どの式を疑問符に置き換える必要がありますか: 5d:4h:3m:2s?
TimeSpan timeSpan = new TimeSpan(5, 4, 3, 2);
string str = timeSpan.ToString(@"d\d\:h\h\:m\m\:s\s", System.Globalization.CultureInfo.InvariantCulture);
のフォーマット方法については、カスタムTimeSpanフォーマット文字列を参照してくださいTimeSpan
。
ただし、負TimeSpan
のsは正のsと区別できないことに注意してください。それらは否定されたように見えます。そのため-new TimeSpan(5,4,3,2)
、引き続きとして表示され5d:4h:3m:2s
ます。負の数を表示する場合は、のプロパティを使用して独自の数をフォーマットする必要がありますTimeSpan
。
これは、現在のコードを使用して実現できます
TimeSpan Ts = new TimeSpan(5, 4, 3, 2);
var RetValue = string.Format("{0}d:{1}h:{2}m:{3}s",
Ts.Days,
Ts.Hours,
Ts.Minutes,
Ts.Seconds);
これをフォーマットされた結果として生成します"5d:4h:0m:2s"
これは、空の大きな時間部分を非表示にするTimeSpanExtensionメソッドです。
public static string ToShortString(this TimeSpan Ts)
{
if(Ts.TotalDays > 1d)
return Ts.ToString("d'd:'h'h:'m'm:'s's'");
if(Ts.TotalHours > 1d)
return Ts.ToString("h'h:'m'm:'s's'");
if(Ts.TotalMinutes > 1d)
return Ts.ToString("m'm:'s's'");
if(Ts.TotalSeconds > 1d)
return Ts.ToString("s's'");
if(Ts.TotalMilliseconds > 1d)
return Ts.ToString("fffffff'ms'");
return Ts.ToString();
}