为什么时间的纳秒值:持续时间在Windows上最接近100的倍数?

在Windows 10 64位上运行以下程序时:

use std::time::{Duration, UNIX_EPOCH}; fn main() { let d = Duration::new(4660, 22136); let t = UNIX_EPOCH + d; let d2 = t.duration_since(UNIX_EPOCH).unwrap(); println!("d: {:?}", d); println!("d2: {:?}", d2); } 

为什么纳秒的数值会达到100的最接近的倍数?

 d: Duration { secs: 4660, nanos: 22136 } d2: Duration { secs: 4660, nanos: 22100 } 

Windows文件时间表示为100纳秒间隔,但我不明白为什么会影响此计算。

通过将UNIX_EPOCH (一个SystemTime )添加到Duration ,最终得到一个SystemTime

sys::time::SystemTime的Windows特定实现基于Windows FILETIME结构。

该结构具有100纳秒的粒度 :

包含自1601年1月1日(UTC)以来的代表100纳秒间隔数的64位值。

据推测, FILETIME的选择是因为这是Windows世界中普遍存在的时间类型,它提供了性能和功能的良好组合。