5
TimeSpan Ts = new TimeSpan(5, 4, 3, 2);
return Ts.ToString("?");

我应该用问号替换什么表达式来获得这种格式: 5d:4h:3m:2s

4

4 回答 4

12
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

虽然请注意,负TimeSpans 无法与正 s 区分开来。它们看起来像是被否定了。因此-new TimeSpan(5,4,3,2)仍将显示为5d:4h:3m:2s。如果你想显示负数,你应该通过TimeSpan.

于 2013-03-10T12:10:03.783 回答
3

您可以通过使用当前代码来完成此操作

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"

于 2013-03-10T12:17:37.250 回答
2

这对我有用

"d'd:'h'h:'m'm:'s's'"

在这里找到http://msdn.microsoft.com/en-us/library/ee372287.aspx

于 2013-03-10T12:20:58.890 回答
0

这是一个 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();
}
于 2019-04-25T02:24:49.897 回答