秒表已经过了输出

时间:2013-03-04 14:51:04

标签: c#

我有一些代码压缩了很多数据,所以我在星期四开始运行并让它在周末运行。星期一,我回来看到它结束了。我使用秒表功能来跟踪代码运行的时间长度。但是,我最终得到了

Elapsed: 2.18:57:55.xxx

我知道它的输出通常是H:M:SS,但是不理解第一个数字,特别是因为它已经运行了好几天。它只是从几小时转换成几天?我把它运行得如此之久以至于破了吗?

编辑:对不起,我不是说它在星期一结束了。我只是说周一(当我回到电脑前),它已经完成了。

2 个答案:

答案 0 :(得分:8)

是的 - 这是TimeSpan.ToString的格式:

  

返回的字符串使用“c”格式说明符格式化,格式如下:

     

[ - ] HH [d]:MM:SS [.fffffff]

     

方括号([和])中的元素可能不包含在返回的字符串中。冒号和句号(:和。)是字面字符。非文字元素列在下表中。请注意,ToString()方法返回的字符串不区分文化。

由于没有格式说明符显示总小时数,因此您需要计算它。如果您希望将小时数显示为单个数字,请使用:

TimeSpan ts = new TimeSpan(2,18,57,55);

var output = string.Format("{0}:{1}",
                           ts.Days*24 + ts.Hours,
                           ts.ToString("mm\\:ss\\.ffff"));

//output =  `66:57:55.0000`

答案 1 :(得分:0)

这预期的行为。来自Timespan.ToString()的文档:

  

返回的字符串格式为" c"格式说明符,格式如下:

     

[ - ] HH [d]:MM:SS [.fffffff]

     

" d" - 时间间隔中的天数。如果时间间隔小于一天,则省略此元素。