Вопрос по wmi, utc, timezone-offset, timezone, vbscript – Определить смещение часового пояса с помощью VBScript?

5

Как я могу определить свойсмещение часового пояса с помощьюVBScript?

ОС Windows обеспечиваетTZ переменная окружения. Для Восточного стандартного времени (Нью-Йорк) его значениеEST5EDT, Тем не менее, я ищу смещение целого числа со знаком от UTC. (Это-5 по восточному поясному времени.)

Ваш Ответ

1   ответ
10

Вот пересмотренная функция, которая, по-видимому, учитывает переход на летнее время.(Вдохновленныйэтот ТАК вопрос.)

Function GetTimeZoneOffset()
    Const sComputer = "."

    Dim oWmiService : Set oWmiService = _
        GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
                  & sComputer & "\root\cimv2")

    Set cItems = oWmiService.ExecQuery("SELECT * FROM Win32_ComputerSystem")

    For Each oItem In cItems
        GetTimeZoneOffset = oItem.CurrentTimeZone / 60
        Exit For
    Next
End Function

[Оригинальная функция, которая НЕ учитывает переход на летнее время.]

Вот мой ответ на мой вопрос (первоисточник).

Для Восточного стандартного времени (Нью-Йорк) эта функция VBScript вернет-5:

Function GetTimeZoneOffset()
    Const sComputer = "."

    Dim oWmiService : Set oWmiService = _
        GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
                  & sComputer & "\root\cimv2")

    Dim cTimeZone : Set cTimeZone = _
        oWmiService.ExecQuery("Select * from Win32_TimeZone")

    Dim oTimeZone
    For Each oTimeZone in cTimeZone
        GetTimeZoneOffset = oTimeZone.Bias / 60
        Exit For
    Next
End Function
Это неТ, кажется, объяснить DST? Alex R.
@Alex - Пожалуйста, дайте мне знать, учитывает ли моя пересмотренная функция летнее время в вашей системе. DavidRR
Для тех, кто ищет, этот метод фактически позволит вам точно запрашивать основанные на времени события Event Viewer через WMI. Затем можно выполнить расчет, чтобы учесть запись событий по умолчанию в формате UTC. Beems

Похожие вопросы