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

在操作系统上发生从夏令时到标准时间的转换时,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月 (日

) 年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
CIMWin32.mof
DLL
CIMWin32.dll

另请参阅

CIM_Setting

操作系统类

SWbemDateTime

日期和时间格式

WMI 任务:日期和时间