确定我的时区使用VBScript偏移?(Determine my time zone offset

2019-07-17 11:23发布

我怎么能确定我的时区偏移使用VBScript?

Windows操作系统提供了TZ环境变量。 对于东部标准时间(纽约),它的值是EST5EDT 。 然而,我要寻找的符号整数UTC的偏移量。 (这是-5东部标准时间)。

Answer 1:

这里是出现占夏令时修订功能。 (由启发本SO问题 。)

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


文章来源: Determine my time zone offset using VBScript?