Я пытаюсь использовать счетчики производительности Windows для мониторинга работоспособности компьютера как части моего приложения. У меня есть некоторые DataCollectors, настроенные для записи данных в формате CSV или BLG. Тем не менее, я отмечаю, что временные метки не содержат информации TZ на временную метку выборки, только один раз на файл. Это означает, что в одном файле данных я буду видеть такие вещи, как:
"(PDH-CSV 4.0) (GMT Standard Time)(-60)","\\MACHINE-NAME\% C2 Time"
"10/29/2017 01:59:44.562","88.359340674585567"
"10/29/2017 01:59:59.562","93.754278507632279"
"10/29/2017 01:00:14.562","89.834673388599242"
"10/29/2017 01:00:29.563","94.014449309223536"
Точно так же при переходе вы видите пропущенный час данных (который более сложен для устранения неоднозначности по сравнению с машиной, находящейся в автономном режиме в течение этого часа).
Я подумал, что, возможно, двоичные данные могут хранить больше информации, поэтому я создал те же метрики и в формате BLG и использовал PowerShell для считывания информации. Тем не менее, в этом случае я все еще не могу получить информацию о часовом поясе за метку времени. Например.,
# $counters = Import-Counter -Path mysamples.blg
# $counters[10].Timestamp
29 October 2017 01:59:59
# $counters[11].Timestamp
29 October 2017 01:00:14
# $counters[10].Timestamp.IsDaylightSavingTime()
False
# $counters[11].Timestamp.IsDaylightSavingTime()
False
# $counters[10].Timestamp.ToFileTimeUtc()
131537159995620000
# $counters[11].Timestamp.ToFileTimeUtc()
131537124145620000
Есть ли способ получить правильную информацию TZ, связанную с меткой времени в данных счетчика производительности, или есть способ добавить время UTC в журнал, а не метку времени смещения TZ?