Я пытаюсь обработать некоторые счетчики WMI, используя Go (как часть обучения Go), и пытаюсь выяснить, как сгенерировать необходимый объект времени.
Основой является эпоха Win32 (1601-01-01), а временная отметка образца составляет 13224382394716547600ns (или, скорее, 132243823947165476 100 нс единиц).
Вот что я пробовал:
тест 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))
current_ts_1
в тесте 1 завершается с ошибкой переполнения.
current_ts_2
в тесте 2 дает мне разрешение только на уровне даты.
В идеале я бы смог получить разрешение в миллисекундах это. Существует ли способ не переполнять Длительность, передаваемую .Add()
, и при этом получать это разрешение?