TimeSpan
使用自定义格式将对象格式化为字符串的推荐方法是什么?
请注意:此答案适用于.Net 4.0及更高版本.如果您想在.Net 3.5或更低版本中格式化TimeSpan,请参阅JohannesH的答案.
自定义TimeSpan格式字符串是在.Net 4.0中引入的.您可以在MSDN Custom TimeSpan Format Strings页面上找到可用格式说明符的完整参考.
这是一个示例时间跨度格式字符串:
string.Format("{0:hh\\:mm\\:ss}", myTimeSpan); //example output 15:36:15
(更新),这是一个使用C#6字符串插值的示例:
$"{myTimeSpan:hh\\:mm\\:ss}"; //example output 15:36:15
您需要使用"\"转义":"字符(除非您使用逐字字符串,否则必须对其进行转义).
MSDN Custom TimeSpan Format Strings页面的摘录解释了有关转义":"和"."的内容.格式字符串中的字符:
自定义TimeSpan格式说明符不包括占位符分隔符符号,例如将小时数与小时数,小时数与分数小时数或秒数与小数秒数分隔开的符号.相反,这些符号必须作为字符串文字包含在自定义格式字符串中.例如,"dd.hh:mm"将句点(.)定义为天和小时之间的分隔符,冒号(:)作为小时和分钟之间的分隔符.
对于.NET 3.5及更低版本,您可以使用:
string.Format ("{0:00}:{1:00}:{2:00}", (int)myTimeSpan.TotalHours, myTimeSpan.Minutes, myTimeSpan.Seconds);
代码取自Jon Skeet的字节答案
对于.NET 4.0及更高版本,请参阅DoctaJonez 答案.
一种方法是创建一个DateTime
对象并将其用于格式化:
new DateTime(myTimeSpan.Ticks).ToString(myCustomFormat) // or using String.Format: String.Format("{0:HHmmss}", new DateTime(myTimeSpan.Ticks))
这就是我所知道的.我希望有人能提出更好的方法.
简单.TimeSpan.ToString
与c,g或G一起使用.更多信息,请访问http://msdn.microsoft.com/en-us/library/ee372286.aspx
我会去
myTimeSpan.ToString("hh\\:mm\\:ss");
Dim duration As New TimeSpan(1, 12, 23, 62) DEBUG.WriteLine("Time of Travel: " + duration.ToString("dd\.hh\:mm\:ss"))
它适用于Framework 4
http://msdn.microsoft.com/en-us/library/ee372287.aspx
这太棒了:
string.Format("{0:00}:{1:00}:{2:00}", (int)myTimeSpan.TotalHours, myTimeSpan.Minutes, myTimeSpan.Seconds);
就个人而言,我喜欢这种方法:
TimeSpan ts = ...; string.Format("{0:%d}d {0:%h}h {0:%m}m {0:%s}s", ts);
您可以根据需要将其设置为自定义,而不会出现任何问题:
string.Format("{0:%d}days {0:%h}hours {0:%m}min {0:%s}sec", ts); string.Format("{0:%d}d {0:%h}h {0:%m}' {0:%s}''", ts);