当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我如何在.NET中使用自定义格式String.Format一个TimeSpan对象?》经验,为你挑选了8个好方法。

TimeSpan使用自定义格式将对象格式化为字符串的推荐方法是什么?



1> Reinstate Mo..:

请注意:此答案适用于.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及更低版本.
@Andrei Rinea:正确,正如我的第二段开头所述".Net 4允许你使用Timespan自定义格式字符串".
请谨慎使用此解决方案,因为“小时”部分大于24时,它将无法正常工作

2> JohannesH..:

对于.NET 3.5及更低版本,您可以使用:

string.Format ("{0:00}:{1:00}:{2:00}", 
               (int)myTimeSpan.TotalHours, 
                    myTimeSpan.Minutes, 
                    myTimeSpan.Seconds);

代码取自Jon Skeet的字节答案

对于.NET 4.0及更高版本,请参阅DoctaJonez 答案.


请记住,如果TimeSpan等于或超过24小时,您将得到不正确的格式.

3> Hosam Aly..:

一种方法是创建一个DateTime对象并将其用于格式化:

new DateTime(myTimeSpan.Ticks).ToString(myCustomFormat)

// or using String.Format:
String.Format("{0:HHmmss}", new DateTime(myTimeSpan.Ticks))

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


如果TimeSpan不到一天,这真的只会起作用.这可能不是一个如此可怕的限制,但它使它不能成为一般解决方案.

4> 小智..:

简单.TimeSpan.ToString与c,g或G一起使用.更多信息,请访问http://msdn.microsoft.com/en-us/library/ee372286.aspx



5> Shehab Fawzy..:

我会去

myTimeSpan.ToString("hh\\:mm\\:ss");



6> 小智..:
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



7> 小智..:

这太棒了:

string.Format("{0:00}:{1:00}:{2:00}",
               (int)myTimeSpan.TotalHours,
               myTimeSpan.Minutes,
               myTimeSpan.Seconds);



8> NoOne..:

就个人而言,我喜欢这种方法:

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);

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有