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
-
-
数据类型: 字符串
-
访问类型:只读
-
限定符: MaxLen (64)
当前对象的简短文本说明。
此属性继承自 CIM_Setting。
-
-
DaylightBias
-
-
数据类型: sint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构|TIME_ZONE_INFORMATION|DaylightBias“) , 单位 (”分钟“)
要在夏令时发生的本地时间翻译期间使用的偏差值。 如果未提供 DaylightDay 属性的值,则忽略此属性。 此属性的值将添加到 Bias 属性中,以形成夏令时使用的偏差。 在大多数时区中,此属性的值为 -60。
-
-
DaylightDay
-
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构|TIME_ZONE_INFORMATION|DaylightDate|wDay“)
从标准时间转换到夏令时,夏令时时间在此操作系统上发生夏令时,夏令时OfWeek。
示例:如果转换日 (DaylightDayOfWeek) 发生在星期日,则值“1”表示 夏令时月的第一个星期日,“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“)
从标准时间转换到夏令时在操作系统上发生 夏令 时时的毫秒。
DaylightMinute
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构|TIME_ZONE_INFORMATION|DaylightDate|wMinute“)
从标准时间转换到夏令时在操作系统上转换时的 夏令 时分钟。
示例:59
DaylightMonth
-
数据类型: uint32
-
访问类型:只读
-
限定符: MappingStrings (“Win32API|时间结构|TIME_ZONE_INFORMATION|DaylightDate|wMonth“)
从标准时间转换到夏令时在操作系统上发生的月份。
1 月 (1 日)
2 月 (2 日)
3 月 (3 日)
4 月 (4 日)
5 月 (5 日)
6 月 (6 日)
7 月 (7 日)
8 月 (8 日)
9 月 (9 日)
10 月 (10 日)
11 月 (11 日)
12 月 (12 日)
DaylightName
-
数据类型: 字符串
-
访问类型:只读
-
限定符: 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 月 (4 日)
5 月 (5 日)
6 月 (6 日)
7 月 (7 日)
8 月 (8 日)
9 月 (9 日)
10 月 (10 日)
11 月 (11 日)
12 月 (12 日)
StandardName
-
数据类型: 字符串
-
访问类型:只读
-
限定符: key、 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) 必须将 10/18/2002 转换为 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/2002)转换为 UTC 日期。 若要将标准日期转换为 UTC 日期,可以使用 VBScript 日期函数(如 Year、Month 和 Day)隔离构成 UTC 日期的各个组件。 对这些组件具有单个值后,可以像将任何其他字符串值一样连接它们。 UTC 日期被视为字符串,因为 GMT 偏移量必须追加到末尾。 如果日期被视为数字,则此值:
20011018113047.000000-480
将错误地视为数学公式, (括号中添加,以便清晰) :
(20011018113047.000000) - (480)
例如,在日期 10/18/2002 中,各个组件为:
- 年份:2002
- 月份:10
- 天:18
脚本需要合并这三个值,字符串“113047.000000” (表示时间,包括毫秒) ,以及派生 UTC 日期的 GMT 偏移量。 例如, (括号再次添加,以便清晰) :
(2002) & (10) & (18) & (113047.000000) & (-480)
注意
可以使用 VBScript 函数小时、分钟和秒转换 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 偏移量,然后在此示例中将指定的当前日期 (转换为 UTC 日期时间格式 10/18/2002) 。 转换日期后,该值用于搜索计算机并返回 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 |
|
另请参阅