【发布时间】:2020-01-25 00:31:42
【问题描述】:
我正在尝试使用 Go 处理一些 WMI 计数器(作为学习 Go 的一部分),并试图弄清楚如何生成必要的时间对象。
基础是 Win32 纪元 (1601-01-01),示例时间戳是 13224382394716547600ns(或者更确切地说,132243823947165476 100ns 单位)。
这是我尝试过的:
测试 1(添加纳秒)
win_epoch := time.Date(1601,1,1, 0, 0, 0, 0, time.UTC)
current_ts_1 := win_epoch.Add(13224382394716547600*time.Nanosecond)
测试 2(添加天数)
win_epoch := time.Date(1601,1,1, 0, 0, 0, 0, time.UTC)
current_ts_2 := win_epoch.AddDate(0,0,(132243823947165476/10000000 / 3600 / 24))
测试 1 中的current_ts_1 失败并出现溢出错误。
current_ts_2 在测试 2 中只给了我日期级别的分辨率。
理想情况下,我能够获得毫秒级的分辨率。有没有一种方法可以不溢出传递给.Add() 的 Duration 并仍然获得此分辨率?
【问题讨论】: