6

我有一些处理大量数据的代码,所以我在星期四启动它,并让它在周末运行。星期一,我回来了,看到它完成了。我使用秒表功能来跟踪代码运行的时间长度。但是,我最终得到

Elapsed: 2.18:57:55.xxx

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

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

4

2 回答 2

8

是的 - 这是格式TimeSpan.ToString

返回的字符串使用“c”格式说明符进行格式化,并具有以下格式:

[-][d.]hh: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`
于 2013-03-04T14:54:20.283 回答
0

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

返回的字符串使用“c”格式说明符进行格式化,并具有以下格式:

[-][d.]hh:mm:ss[.fffffff]

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

于 2013-03-04T14:55:06.830 回答