如何获得更好的TimeSpan对象输出?

时间:2010-12-19 16:48:36

标签: c#

如果我得到这样一个输出 - TimeSpan对象 - 如果没有额外的零和那么多小数位,我怎么能很好地得到它?

2 个答案:

答案 0 :(得分:4)

这已在.NET 4.0中修复,TimeSpan结构获取了一个ToString()重载,允许您指定格式字符串。如果您无法升级,则可以考虑使用此扩展方法:

public static class Extensions {
    public static string Format(this TimeSpan ts, string format) {
        var dt = new DateTime(Math.Abs(ts.Ticks));
        var result = dt.ToString(format);
        if (ts.Ticks < 0) result = "-" + result;
        return result;
    }
}

样本用法:

        var ts = new TimeSpan(1, 2, 3);
        var s = ts.Format("h:mm:ss");

制作1:02:03

答案 1 :(得分:1)

如果您的目标是.NET 4,则可以使用TimeSpan.ToString(string) overload

上的格式说明符之一

在不知道您的确切要求的情况下,“g”TimeSpan Format String可能就是您所需要的:

  

一般短格式

     

此说明符仅输出所需内容。它是文化敏感的,采取形式
   [-][d’:’]h’:’mm’:’ss[.FFFFFFF]