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 = 當地時間 - 偏差。 這是必要屬性。
-
-
標題
-
-
資料類型: 字串
-
存取類型:唯讀
-
限定詞: MaxLen (64)
目前 物件的簡短文字描述。
此屬性繼承自 CIM_Setting。
-
-
DaylightBias
-
-
資料類型: sint32
-
存取類型:唯讀
-
限定詞: MappingStrings (「Win32API|時間結構|TIME_ZONE_INFORMATION|DaylightBias「) , Units (」minutes「)
在日光節約時間期間發生的當地時間翻譯期間所要使用的偏差值。 如果未提供 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 月 (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「) , Units (」minutes「)
日光節約時間未生效時要使用的偏差值。 如果未提供 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
-
資料類型: 字串
-
存取類型:唯讀
-
限定詞: 機碼、 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 查詢時使用標準日期時間格式,例如 10/18/2002。 相反地,您必須將查詢中使用的任何日期轉換為 UTC 格式。 這需要兩個步驟:1 個) 您必須判斷時區與 Greenwich 平均時間之間分鐘數) 的位移 (差異,而 2) 您必須將 10/18/2002 轉換為 UTC 值。
判斷 Greenwich 平均時間的位移
當然,WMI 很難使用日期和時間;幸運的是,WMI 至少可讓您輕鬆地判斷時區與 Greenwich 平均時間之間的位移。 WMI 類別Win32_TimeZone包含屬性 - Bias - 會傳回 GMT 位移。
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 位移之後,您必須接著將標準日期,例如 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 函式 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 |
|
另請參閱