我有一些处理大量数据的代码,所以我在星期四启动它,并让它在周末运行。星期一,我回来了,看到它完成了。我使用秒表功能来跟踪代码运行的时间长度。但是,我最终得到
Elapsed: 2.18:57:55.xxx
我知道它的输出通常是 H:M:SS,但不理解第一个数字,特别是因为它已经运行了好几天。它只是从几个小时变成了几天吗?我让它运行太久以至于它坏了吗?
编辑:对不起,我不是说周一就结束了。我的意思是到星期一(当我回到电脑前),它已经完成了。
我有一些处理大量数据的代码,所以我在星期四启动它,并让它在周末运行。星期一,我回来了,看到它完成了。我使用秒表功能来跟踪代码运行的时间长度。但是,我最终得到
Elapsed: 2.18:57:55.xxx
我知道它的输出通常是 H:M:SS,但不理解第一个数字,特别是因为它已经运行了好几天。它只是从几个小时变成了几天吗?我让它运行太久以至于它坏了吗?
编辑:对不起,我不是说周一就结束了。我的意思是到星期一(当我回到电脑前),它已经完成了。
是的 - 这是格式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`
这是预期的行为。来自Timespan.ToString()的文档:
返回的字符串使用“c”格式说明符进行格式化,并具有以下格式:
[-][d.]hh:mm:ss[.fffffff]
"d" - 时间间隔中的天数。如果时间间隔小于 1 天,则省略此元素。