将TimeSpan格式化为mm:ss,适用于正和负的TimeSpans

12

我正在寻找一个.NET 3.5的解决方案。我编写了以下可行的解决方案:

private string FormatTimeSpan(TimeSpan time)
{
    return String.Format("{0}{1:00}:{2:00}", time < TimeSpan.Zero ? "-" : "", Math.Abs(time.Minutes), Math.Abs(time.Seconds));
}

但我的问题是:是否有更好的方法?也许有一些更短的方法,我不需要使用帮助函数。

2个回答

31

使用自定义时间间隔格式字符串可以使代码更简短:

private string FormatTimeSpan(TimeSpan time)
{
    return ((time < TimeSpan.Zero) ? "-" : "") + time.ToString(@"mm\:ss");
}

时间.ToString() 不应该自动显示负号吗? - Tisho
5
@Tisho - 使用自定义格式字符串是不行的,也没有相应的自定义格式说明符。我不能改变原意,只能使句子更通俗易懂。 - Oded
我不确定,但是 time.ToString(@"mm:ss") 在 .net 3.5 中是否有效? - Tarion
刚刚想到将其实现为扩展,这样功能就可以在我的整个程序中使用了。 - Tarion
@Tarion:对我也不起作用的是“mm:ss”。总是返回“00:00”。有人知道原因吗? - user654123

2

对于 .Net 4.0 以下的版本,您可以使用以下方法:

get { return Time.ToString().Substring(3); }

我认为这是一个聪明的黑客技巧。 - Infrid
2
我建议不要采用这种方法,因为它依赖于默认的 ToString 行为,而这是与文化相关的。 - Pac0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接