为什么 DateTime
的最小分辨率是基于刻度(100 纳秒单位)而不是毫秒?
最佳答案
TimeSpan
和DateTime
使用相同的Ticks
进行操作,例如将TimeSpan
添加到DateTime
微不足道。精度越高越好。主要用于
TimeSpan
,但上述原因将其传输到DateTime
。例如
StopWatch
测量通常短于毫秒的短时间间隔。它可以返回一个TimeSpan
。
在我的一个项目中,我使用TimeSpan
处理音频样本。 100 纳秒足够短,毫秒不会。即使使用毫秒计,您也需要一个 Int64 来表示
DateTime
。但是你浪费了大部分范围,因为 0 到 9999 之外的年份并不是很有用。因此,他们选择了尽可能小的刻度,同时允许DateTime
表示 9999 年。100ns 大约有 261.5 个滴答。由于
DateTime
需要两位用于与时区相关的标记,因此 100ns 刻度是适合 Int64 的最小十次幂间隔。
因此使用较长的刻度会降低精度,而不会获得任何好处。使用较短的刻度不适合 64 位。 => 100ns 是给定约束的最佳值。
关于c# - 为什么 DateTime 基于 Ticks 而不是毫秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14415555/