将 TimeSpan 格式设置为 mm:ss 以表示正数和负数 TimeSpan

问题描述 投票:0回答:3

我正在寻找 .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));
}

但我的问题是:有更好的方法吗?也许是更短的东西,我不需要辅助函数。

c# time formatting string-formatting
3个回答
31
投票

稍微短一些,使用自定义时间跨度格式字符串

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

2
投票

适用于.Net 4.0以下

您可以使用:

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

0
投票

最好提前准备格式字符串,并且不要在每次格式调用时生成带有连接的字符串

public static class TimeSpanOffsetFormatExtensions
{
    private const string PositiveFormat = @"\+hh\:mm";
    private const string NegativeFormat = @"\-hh\:mm";

    public static string FormatOffset(this TimeSpan timeSpan)
    {
        var format = timeSpan < TimeSpan.Zero
            ? NegativeFormat
            : PositiveFormat;

        return timeSpan.ToString(format);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.