我有一些代码压缩了很多数据,所以我在星期四开始运行并让它在周末运行。星期一,我回来看到它结束了。我使用秒表功能来跟踪代码运行的时间长度。但是,我最终得到了
Elapsed: 2.18:57:55.xxx
我知道它的输出通常是H:M:SS,但是不理解第一个数字,特别是因为它已经运行了好几天。它只是从几小时转换成几天?我把它运行得如此之久以至于破了吗?
编辑:对不起,我不是说它在星期一结束了。我只是说周一(当我回到电脑前),它已经完成了。答案 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" - 时间间隔中的天数。如果时间间隔小于一天,则省略此元素。