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“)

从夏令时过渡到标准时间在操作系统上发生标准时间时,StandardMonthStandardDayOfWeek

如果转换日 (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

数据类型: 字符串

访问类型:只读

限定符: keyMaxLen (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
CIMWin32.mof
DLL
CIMWin32.dll

另请参阅

CIM_Setting

操作系统类

SWbemDateTime

日期和时间格式

WMI 任务:日期和时间