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

jav*_*red 4 c#

根据msdn DateTime,精度为10毫秒.因此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???)
Run Code Online (Sandbox Code Playgroud)

我期望int值,因为当精度为10 ms时,double值没有意义.我需要在Thread.Sleep()中使用结果值.我应该转换为int吗?

Jon*_*eet 7

DateTime它本身的精确度低至刻度.

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

只是施展到int应该是绝对正常的.

(顺便说一句,你可能想阅读Eric Lippert关于此的博文.)