Win32_TimeZone 类
Win32_TimeZoneWMI 类表示运行 Windows 的计算机系统的时区信息,其中包括转换到夏令时转换所需的更改。
以下语法从托管对象格式 (MOF) 代码中简化,包括所有继承的属性。 属性和方法按字母顺序排列,而不是按 MOF 顺序排列。
语法
[Dynamic, Provider("CIMWin32"), UUID("{8502C4EC-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_TimeZone : CIM_Setting
{
string Caption;
string Description;
string SettingID;
sint32 Bias;
sint32 DaylightBias;
uint32 DaylightDay;
uint8 DaylightDayOfWeek;
uint32 DaylightHour;
uint32 DaylightMillisecond;
uint32 DaylightMinute;
uint32 DaylightMonth;
string DaylightName;
uint32 DaylightSecond;
uint32 DaylightYear;
uint32 StandardBias;
uint32 StandardDay;
uint8 StandardDayOfWeek;
uint32 StandardHour;
uint32 StandardMillisecond;
uint32 StandardMinute;
uint32 StandardMonth;
string StandardName;
uint32 StandardSecond;
uint32 StandardYear;
};
成员
Win32_TimeZone 类具有以下类型的成员:
属性
Win32_TimeZone 类具有这些属性。
-
偏差
-
-
数据类型: sint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |偏差“) , 单位 (”分钟“)
本地时间转换的当前偏差。 偏差是协调世界时 (UTC) 和本地时间之间的差异。 UTC 和本地时间之间的所有转换都基于以下公式:UTC = 本地时间 - 偏差。 此属性是必需项。
-
-
Caption
-
-
数据类型: string
-
访问类型:只读
-
限定符: MaxLen (64)
当前对象的简短文本说明。
此属性继承自 CIM_Setting。
-
-
DaylightBias
-
-
数据类型: sint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightBias“) , 单位 (”分钟“)
在夏令时发生的本地时间转换期间使用的偏差值。 如果未提供 DaylightDay 属性的值,则忽略此属性。 此属性的值将添加到 Bias 属性,以形成在夏令时使用的偏差。 在大多数时区中,此属性的值为 -60。
-
-
DaylightDay
-
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightDate|wDay“)
在此操作系统上发生从标准时间到夏令时转换时,DaylightMonth 的DaylightDayOfWeek。
示例:如果转换日 (DaylightDayOfWeek) 发生在星期日,则值“1”表示 DaylightMonth 的第一个星期日,“2”表示第二个星期日,依类推。 值“5”表示当月的最后一 个 DaylightDayOfWeek 。
-
-
DaylightDayOfWeek
-
-
数据类型: uint8
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightDate|wDayOfWeek“)
在操作系统上发生从标准时间到夏令时转换的一周中的某一天。
-
-
星期日 (0)
-
星期一 (1)
-
星期二 (2)
-
星期三 (3)
-
星期四 (4)
-
星期五 (5)
-
星期六 (6)
示例:1
DaylightHour
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightDate|wHour“)
在操作系统上发生从标准时间到夏令时转换的一天中的一小时。
示例:2
DaylightMillisecond
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightDate|wMilliseconds“)
在操作系统上发生从标准时间到夏令时转换时的 DaylightSecond 毫秒。
DaylightMinute
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightDate|wMinute“)
在操作系统上发生从标准时间到夏令时转换时的 DaylightHour 分钟数。
示例:59
DaylightMonth
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightDate|wMonth“)
在操作系统上从标准时间转换到夏令时的月份。
) 年 1 月 (日
2 月 (2 日)
(年 3 月 3 日)
4 月 (日 4 日)
5 月 (日 5)
6 月 (日 6)
7 月 (7 日)
8 月 (日 8)
) 年 9 月 (日
10 月 (日)
) 年 11 月 (日
12 月 (日 12)
DaylightName
-
数据类型: string
-
访问类型:只读
-
限定符: MaxLen (256) 、 MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightName“)
夏令时生效时表示的时区。
示例:“EDT” (东部夏令时)
DaylightSecond
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightDate|wSecond“)
在操作系统上发生从标准时间到夏令时转换时的 DaylightMinute 秒。
示例:59
DaylightYear
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |DaylightDate|wYear“)
夏令时生效的年份。 此属性不是必需的。
示例:1997
描述
-
数据类型: 字符串
-
访问类型:只读
当前对象的文本说明。
此属性继承自 CIM_Setting。
SettingID
-
数据类型: 字符串
-
访问类型:只读
-
限定符: MaxLen (256)
已知当前对象的标识符。
此属性继承自 CIM_Setting。
StandardBias
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardBias“) , 单位 (”分钟“)
夏令时无效时要使用的偏置值。 如果未提供 StandardDay 的值,则忽略此属性。 此属性的值将添加到 Bias 属性中,以在标准时间内形成偏差。
示例:0
StandardDay
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardDate|wDay“)
在操作系统上发生从夏令时到标准时间的转换时,StandardMonth 的 StandardDayOfWeek。
如果转换日 (StandardDayOfWeek) 发生在星期日,则值“1”表示 StandardMonth 的第一个星期日,“2”表示第二个星期日,依此推移。 值“5”表示当月的最后一个 StandardDayOfWeek 。
StandardDayOfWeek
-
数据类型: uint8
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardDate|wDayOfWeek“)
在操作系统上从夏令时转换到标准时间的一周中的某一天。
星期日 (0)
星期一 (1)
星期二 (2)
星期三 (3)
星期四 (4)
星期五 (5)
星期六 (6)
StandardHour
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardDate|wHour“)
在操作系统上从夏令时转换到标准时间的一天中的一小时。
示例:11
StandardMillisecond
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardDate|wMilliseconds“)
在操作系统上从夏令时转换到标准时间时, StandardSecond 的毫秒。
StandardMinute
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardDate|wMinute“)
在操作系统上从夏令时转换到标准时间时 StandardDay 的分钟数。
示例:59
StandardMonth
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardDate|wMonth“)
在操作系统上从夏令时转换到标准时间的月份。
) 年 1 月 1 日 (
2 月 (2 日)
3 月 (3 日)
) 年4月 (日
) 年5月 (日
) 年6月 (日
7 月 (7 日)
) 年8月 (日
) 年 9 月 (日
10 月 (日)
) 年 11 月 (日
) 年 12月 (日
StandardName
-
数据类型: 字符串
-
访问类型:只读
-
限定符: 键、 MaxLen (256) 、 MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardName“)
标准时间生效时表示的时区的名称。
示例:“EST” (东部标准时间)
StandardSecond
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardDate|wSecond“)
在操作系统上发生从夏令时到标准时间的转换时, StandardMinute 的秒。
示例:59
StandardYear
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构 |TIME_ZONE_INFORMATION |StandardDate|wYear“)
标准时间生效的年份。 此属性不是必需的。
示例:1997
备注
Win32_TimeZone 类派生自 CIM_Setting。
编写 WMI 查询时,不能使用标准日期时间格式(如 2002/10/18)。 相反,你需要将查询中使用的任何日期转换为 UTC 格式。 这需要两个步骤:1) 必须确定时区与格林威治平均时间之间) 分钟数的偏移量 (差;2) 必须将 2002 年 10 月 18 日转换为 UTC 值。
确定与格林威治平均时间的偏移量
无可否认,WMI 使得处理日期和时间变得困难:幸运的是,WMI 至少可以轻松确定时区和格林威治平均时间之间的偏移量。 WMI 类Win32_TimeZone包含返回 GMT 偏移量的属性 Bias。
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
Wscript.Echo "Offset: "& objTimeZone.Bias
Next
将日期转换为 UTC 值
确定 GMT 偏移量后,必须将标准日期(如 2002 年 10 月 18 日)转换为 UTC 日期。 若要将标准日期转换为 UTC 日期,可以使用 VBScript 日期函数(例如 Year、Month 和 Day)来隔离构成 UTC 日期的各个组件。 为这些组件创建单个值后,可以像连接任何其他字符串值一样连接它们。 UTC 日期被视为字符串,因为 GMT 偏移量必须追加到末尾。 如果日期被视为数字,则此值:
20011018113047.000000-480
将错误地视为数学等式, (添加括号以明确) :
(20011018113047.000000) - (480)
例如,在 2002 年 10 月 18 日,各个组件包括:
- 年份: 2002
- 月份:10
- 天: 18
脚本需要组合这三个值,即表示时间的字符串“113047.000000” (,包括) 毫秒,以及派生 UTC 日期的 GMT 偏移量。 例如,为了清楚) ,再次添加了 (括号:
(2002) & (10) & (18) & (113047.000000) & (-480)
注意
可以使用 VBScript 函数 Hour、Minute 和 Second 转换 UTC 日期的时间部分。 因此,时间(如上午 11:30:47)将转换为 113047。
有一个复杂因素。 月份必须在字符串中占据位置 5 和 6;当天必须占据位置 7 和 8。 第 10 个月和第 18 天没有问题。 但是,如何获得 7 月 5 日 (月 7 日、第 5 天) 来填补必要的职位呢? 答案是向每个值添加前导零,从而将 7 更改为 07,将 5 更改为 05。
为此,请使用 VBScript Len 函数检查月份和日期) 的长度 (字符数。 如果长度为 1 (表示) 只有一个字符,请添加前导零。 因此:
If Len(dtmMonth) = 1 Then
dtmMonth = "0" & dtmMonth
End If
示例
以下 VBScript 示例将当前日期转换为 UTC 日期。
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
strBias = objTimeZone.Bias
Next
dtmCurrentDate = Date
dtmTargetDate = Year(dtmCurrentDate)
dtmMonth = Month(dtmCurrentDate)
If Len(dtmMonth) = 1 Then
dtmMonth = "0" & dtmMonth
End If
dtmTargetDate = dtmTargetDate & dtmMonth
dtmDay = Day(dtmCurrentDate)
If Len(dtmDay) = 1 Then
dtmDay = "0" & dtmDay
End If
dtmTargetDate = dtmTargetDate & dtmDay & "000000.000000"
dtmTargetDate = dtmTargetDate & Cstr(strBias)
以下 VBScript 示例确定 GMT 偏移量,然后将指定的当前日期 (在本例中为 2002/10/18) 转换为 UTC 日期时间格式。 转换日期后,该值用于搜索计算机并返回 2002 年 10 月 18 日之后创建的所有文件夹的列表。
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
strBias = objTimeZone.Bias
Next
dtmCurrentDate = "10/18/2002"
dtmTargetDate = Year(dtmCurrentDate)
dtmMonth = Month(dtmCurrentDate)
If Len(dtmMonth) = 1 Then
dtmMonth = "0" & dtmMonth
End If
dtmTargetDate = dtmTargetDate & dtmMonth
dtmDay = Day(dtmCurrentDate)
If Len(dtmDay) = 1 Then
dtmDay = "0" & dtmDay
End If
dtmTargetDate = dtmTargetDate & dtmDay & "000000.000000"
dtmTargetDate = dtmTargetDate & Cstr(strBias)
Set colFolders = objSWbemServices.ExecQuery _
("SELECT * FROM Win32_Directory WHERE CreationDate < '" & _
dtmtargetDate & "'")
For Each objFolder in colFolders
Wscript.Echo objFolder.Name
Next
以下 VBScript 代码示例显示Win32_TimeZone实例的设置。
Dim arDayOrWeek(7)
arDayOrWeek(0) = "Sunday"
arDayOrWeek(1) = "Monday"
arDayOrWeek(2) = "Tuesday"
arDayOrWeek(3) = "Wednesday"
arDayOrWeek(4) = "Thursday"
arDayOrWeek(5) = "Friday"
arDayOrWeek(6) = "Saturday"
Dim arMonth(13)
arMonth(1) = "January"
arMonth(2) = "Feburary"
arMonth(3) = "March"
arMonth(4) = "April"
arMonth(5) = "May"
arMonth(6) = "June"
arMonth(7) = "July"
arMonth(8) = "August"
arMonth(9) = "September"
arMonth(10) = "October"
arMonth(11) = "November"
arMonth(12) = "December"
strComputer = "."
wmiQuery = "Select * from Win32_TimeZone"
Set objWMIService = GetObject("winmgmts:\\" & _
strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery(wmiQuery)
For Each objItem in colItems
WScript.Echo "Day of Week setting is: " _
& objItem.dayLightDayOfWeek _
& " which is: " & arDayOrWeek(objItem.DaylightDayOfWeek)
WScript.Echo "Hour: " & objItem.DaylightHour
WScript.Echo "Month: " & objItem.DaylightMonth _
& " which is: " & arMonth(objItem.DaylightMonth )
WScript.Echo "Description: " & objItem.DaylightName
WScript.Echo "The transition from DLS to Standard occurs: "
WScript.Echo "Day of Week setting is: " _
& objItem.standardDayOfWeek _
& " which is: " & arDayOrWeek(objItem.DaylightDayOfWeek)
WScript.Echo "Hour: " & objItem.StandardHour
WScript.Echo "Month: " & objItem.StandardMonth _
& " which is: " & arMonth(objItem.StandardMonth )
WScript.Echo "Description: " & objItem.StandardName
Next
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista |
最低受支持的服务器 |
Windows Server 2008 |
命名空间 |
Root\CIMV2 |
MOF |
|
DLL |
|
另请参阅