我有一个时间跨度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);
但它没有给出上述结果。我怎样才能达到我想要的效果?
答案 0 :(得分:12)
也许你想要像
这样的东西string TimeSpanText = string.Format(
MyTimeSpan.TotalHours >= 1 ? @"{0:h\:mm\:ss}" : @"{0:mm\:ss}",
MyTimeSpan);
答案 1 :(得分:6)
我认为单个格式字符串不会给你你想要的东西,但是自己构建输出是一项简单的任务:
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()
一样简单。