c# - 为什么 DateTime 基于 Ticks 而不是毫秒?

标签 c# .net vb.net datetime

为什么 DateTime 的最小分辨率是基于刻度(100 纳秒单位)而不是毫秒?

最佳答案

  • TimeSpanDateTime 使用相同的 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/

相关文章:

c# - 有没有办法在 C# 代码 (Linq-to-sql) 中获取两点之间检索的所有数据

.net - Zxing.Net 的 BarcodeReader

c# - Encoding.GetEncoding(437).GetString() 错误?

c# - 防止在设计时调整高度控件的大小

c# - 如何在 VB.Net 中创建一个未实现时显示异常代码的接口(interface)方法,就像在 C# 中一样

c# - 如何使用MySql中的动态查询将数据插入临时表

c# - 如何在 C# 和 C++ 中测量耗时

c# - 如何在 C# 中验证 URL 以避免 404 错误?

c# - 避免破坏生成的代码

asp.net - Crystal Reports 未出现在 VS 2013 中