如何计算msms中两个DateTime之间的差异?

时间:2011-12-12 07:59:13

标签: c#

根据msdn DateTime,精度为10 ms。因此,下面示例中的t2-t1精度也是10 ms。然而,返回的值是“双倍”,令人困惑。

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 ms时,double值没有意义。我需要在Thread.Sleep()中使用结果值。我应该转换为int吗?

1 个答案:

答案 0 :(得分:7)

DateTime本身的精度低至刻度线。

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

只需转换为int就可以了。

(顺便说一句,你可能想阅读Eric Lippert's blog post。)