【发布时间】:2010-12-20 08:16:14
【问题描述】:
如何确定我使用的计算机是否有夏令时? (最好使用 WMI)
根据this article at TechNet,我可以查询SELECT DaylightInEffect FROM Win32_ComputerSystem,但是Vista或Win7不支持DaylightInEffect属性。由于我的程序将在各种系统(XP、Vista、7)上运行,我希望有一些可移植的方式来查找。
【问题讨论】:
如何确定我使用的计算机是否有夏令时? (最好使用 WMI)
根据this article at TechNet,我可以查询SELECT DaylightInEffect FROM Win32_ComputerSystem,但是Vista或Win7不支持DaylightInEffect属性。由于我的程序将在各种系统(XP、Vista、7)上运行,我希望有一些可移植的方式来查找。
【问题讨论】:
记录的支持的操作系统列表不准确,当我尝试时,这在 Win7 上运行良好。我想不出任何其他操作系统不支持它的原因,使用 Win32 API (GetTimeZoneInformation) 很容易找到。
您可以使用WmiCodeCreator 进行快速检查。
【讨论】:
这是一个使用问题中引用的 WMI 查询实现的布尔函数。
(相关:How Can I Determine My Time Zone Offset Using VBScript?)
Function IsDaylightInEffect()
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
IsDaylightInEffect = oItem.DaylightInEffect
Exit For
Next
End Function
【讨论】: