我正在编写一个简单的通用记录器类,它知道正在记录的任务的开始和结束时间。
在英语中,您更愿意看到代表在不同时间内完成任务所需的时间?
我目前有,
Log("Finished in {0}ms, {1}s, {2}m.", ts.TotalMilliseconds, ts.TotalSeconds, ts.TotalMinutes);
哪个输出,
2012-02-16 @ 20:12:33:2007.7125ms完成,2.0078125s,0.0334635416666667m。
您可能建议采用哪种更好的方式?
干杯, P上。
感谢Xeno,最终代码为:
Log(string.Concat("Finished in ", (ts.Hours > 0 ? ts.Hours + "h " : string.Empty),
(ts.Minutes > 0 ? ts.Minutes + "m " : string.Empty),
(ts.Seconds > 0 ? ts.Seconds + "s " : string.Empty),
(ts.Milliseconds > 0 ? ts.Milliseconds + "ms " : string.Empty),
("(" + ts.TotalMilliseconds.ToString("0.000") + ")")));
答案 0 :(得分:3)
怎么样:
0h 0m 2s 7.815ms
由于它是一个通用的Logger,这是一般性的建议
最好的方法是为用户提供一种在配置文件中定义它的方法,或至少在初始化时以编程方式定义
答案 1 :(得分:2)
我个人偏好使用一些标准。因为它们是标准的,以后可以轻松解析。
例如,HTTP/1.1 Date/Time format产生以下任何格式。
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
除此之外,最好存储 Unix时间戳。它总是很方便。
最后将持续时间以毫秒为单位。如果你有几毫秒,你可以将它转换为任何其他更高的单位。但是,如果您希望其他人阅读它,请将其置于HH:MM:SS.fff
或类似格式。这种格式更容易理解。
答案 2 :(得分:1)
您也可以简单地将开始和结束时间记录到最高精度,这可能是最灵活或最准确的表示。
答案 3 :(得分:0)
这一切都取决于背景。如果您的进程通常运行几分钟,则毫秒无关紧要。如果你有一些在几秒钟内运行的东西,毫秒可能是相关的。如果它低于1秒,绝对是毫秒或微米。
答案 4 :(得分:0)
如果它会在几毫秒到几小时之间变化,那么我会坚持使用一致且熟悉的符号:
HH:mm:ss.fff