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);
有关如何格式化s ,请参阅自定义 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"
这是一个 TimeSpan 扩展方法,它将隐藏空的大时间部分。
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();
}