TimeSpan FormatString,可选小时
我有一个时间跨度, ts
,大多数分钟和秒,但有时几个小时。 我想ts
返回一个格式化的字符串,它会给出以下结果:
3:30 (hours not displayed, showing only full minutes) 13:30 1:13:30 (shows only full hours instead of 01:13:30)
到目前为止我有:
string TimeSpanText = string.Format("{0:h\\:mm\\:ss}", MyTimeSpan);
但它没有给出上述结果。 我怎样才能达到我想要的效果?
我不认为单个格式字符串会给你你想要的东西,但自己构建输出是一个简单的任务:
public string FormatTimeSpan(TimeSpan ts) { var sb = new StringBuilder(); if ((int) ts.TotalHours > 0) { sb.Append((int) ts.TotalHours); sb.Append(":"); } sb.Append(ts.Minutes.ToString("m")); sb.Append(":"); sb.Append(ts.Seconds.ToString("ss")); return sb.ToString(); }
编辑:更好的主意!
您可以将上面的方法设置为TimeSpan
类上的扩展方法,如下所示:
public static class Extensions { public static string ToMyFormat(this TimeSpan ts) { // Code as above. } }
然后使用它就像调用ts.ToMyFormat()
一样简单。
也许你想要的东西
string TimeSpanText = string.Format( MyTimeSpan.TotalHours >= 1 ? @"{0:h\:mm\:ss}" : @"{0:mm\:ss}", MyTimeSpan);