如何在.NET中使用自定义格式String.Format TimeSpan对象?

TimeSpan对象格式化为具有自定义格式的字符串的推荐方式是什么?


请注意:这个答案适用于.Net 4.0及以上版本。 如果您想在.Net 3.5或更低版本中格式化TimeSpan,请参阅JohannesH的答案。

自定义TimeSpan格式字符串是在.NET 4.0中引入的。 您可以在MSDN Custom TimeSpan格式字符串页面找到可用格式说明符的完整参考。

以下是一个示例时间跨度格式字符串:

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格式字符串页面摘录解释了有关转义“:”和“。”的内容。 格式字符串中的字符:

自定义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))

这是我知道的。 我希望有人能提出更好的方法。

链接地址: http://www.djcxy.com/p/18495.html

上一篇: How can I String.Format a TimeSpan object with a custom format in .NET?

下一篇: converting seconds from the Epoch into localtime