Windows で Rust の SystemTime の interval のやつとかのメモ
Rust のシステム時刻についてメモ
fn main() { let now = std::time::SystemTime::now(); println!("now: {:?}", now); // => now: SystemTime { intervals: 132966473691539291 } }
- Windows で std::time::SystemTime::now() すると、SystemTime インスタンスが得られる
- SystemTime インスタンスを {:?} で見ると、intervals という値だけ見せてくれる
- intervals は 132966473691539291 のような巨大な数字
- 中を見ると、Win32 API の GetSystemTimePreciseAsFileTime を使ってるっぽい?
- つまり 1601 年 1 月 1 日 0 時 0 分(UTC) からの経過時間を 100 ナノ秒単位で保持してるっぽい?
- 132966473691539291 は、13296647369(秒) 153(ミリ秒) 929(マイクロ秒) 1 (x 100 =ナノ秒) ということ?
- 13296647369(秒) は、365 日で割ると、421.6 年だから、1601 年と足すと 2022 年 7 月 で大体現在であってそう。多い分はうるう年の分かな多分
SystemTime についてメモ
- SystemTime インスタンスを取得できても、やりたいことほとんど何もできないね……
- duration_since(), elapsed(), checked_add(), checked_sub()
- 自分で毎回計算するのは野暮すぎるし、基本的には chrono みたいなライブラリを使うのが良さそう