如何以毫秒为单位计算两个DateTime之间的差值

本文关键字:DateTime 两个 之间 为单位 计算 | 更新日期: 2023-09-27 18:17:28

根据msdn DateTime精度为10毫秒。所以在下面的例子中,t2-t1的精度也是10ms。然而,返回值是"double",这是令人困惑的。

DateTime t1 = DateTime.Now; // precision is 10 ms
....
DateTime t2 = DateTime.Now; // precision is 10 ms
... (t2-t1).TotalMilliseconds; // double (so precision is less than 1 ms???)

我期望int值,因为双精度值在精度为10毫秒时没有意义。我需要在Thread.Sleep()中使用结果值。我应该直接转换为int吗?

如何以毫秒为单位计算两个DateTime之间的差值

DateTime本身的精度精确到刻度

DateTime.Now的粒度通常为10或15ms -这是系统时钟的粒度。(请注意,这并不意味着时钟精确到最近的10或15毫秒。)DateTime上的减法运算符不应该知道或关心这一点-结果只是TimeSpan,它再次具有刻度级别的精度。

只要转换到int应该是绝对没问题的。

(顺便说一下,你可能想阅读Eric Lippert关于这方面的博客文章。)