TimeSpan.ToString()返回字符串,如(d:hh:mm:ss)

时间:2013-03-10 12:02:40

标签: c# timespan

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

我应该用问号代替什么表达式来获取此格式: 5d:4h:3m:2s

4 个答案:

答案 0 :(得分: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);

请参阅Custom TimeSpan Format Strings,了解如何格式化TimeSpan

虽然注意到负TimeSpan无法与正面区分开来。他们看起来像是negated。因此-new TimeSpan(5,4,3,2)仍将显示为5d:4h:3m:2s。如果要显示负数,则应通过TimeSpan的属性格式化自己的数字。

答案 1 :(得分: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"

答案 2 :(得分:2)

这对我有用

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

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

答案 3 :(得分:0)

这是一个TimeSpan扩展方法,它将隐藏空的大型时间部分。

def list_squared(number):
    total = 0
    x = 1
    while x <= math.sqrt(number):
        if number % x == 0:
            if (number/x == x) :
                total += x*x
            else :
                total += x*x + (number/x)*(number/x)
        x += 1

    bounds = math.sqrt(total)
    if math.ceil(bounds) == math.floor(bounds):
        return [number, total]
    else:
        return False