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|Bias")、 Units ("minutes")
現地時刻変換の現在のバイアス。 偏りは、協定世界時 (UTC) と現地時刻の違いです。 UTC と現地時刻の間のすべての変換は、次の数式に基づいています: UTC = ローカル時刻 - バイアス。 このプロパティは必須です。
-
-
Caption
-
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: 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" は第 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")
オペレーティング システムで標準時から夏時間への切り替えが行われる 1 日の時間。
例: 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
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: MaxLen (256) 、MappingStrings ("Win32API|時間構造|TIME_ZONE_INFORMATION|DaylightName")
夏時間が有効な場合に表されるタイム ゾーン。
例: "EDT" (東部夏時間)
DaylightSecond
-
データ型: uint32
-
アクセスの種類: 読み取り専用
-
修飾子: MappingStrings ("Win32API|時間構造|TIME_ZONE_INFORMATION|DaylightDate|wSecond")
オペレーティング システムで標準時から夏時間への切り替えが発生した場合の DaylightMinute の 2 番目。
例: 59
DaylightYear
-
データ型: uint32
-
アクセスの種類: 読み取り専用
-
修飾子: MappingStrings ("Win32API|時間構造|TIME_ZONE_INFORMATION|DaylightDate|wYear")
夏時間が有効な年。 このプロパティは必須ではありません。
例: 1997
説明
-
データ型: string
-
アクセスの種類: 読み取り専用
現在のオブジェクトのテキスト説明。
このプロパティは、 CIM_Settingから継承されます。
SettingID
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: 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" は第 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")
オペレーティング システムで夏時間から標準時への切り替えが行われる 1 日の時間。
例: 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
-
データ型: string
-
アクセスの種類: 読み取り専用
-
修飾子: key、 MaxLen (256)、 MappingStrings ("Win32API|時間構造|TIME_ZONE_INFORMATION|StandardName")
標準時が有効な場合に表されるタイム ゾーンの名前。
例: "EST" (東部標準時)
StandardSecond
-
データ型: uint32
-
アクセスの種類: 読み取り専用
-
修飾子: MappingStrings ("Win32API|時間構造|TIME_ZONE_INFORMATION|StandardDate|wSecond")
オペレーティング システムで夏時間から標準時への切り替えが行われるときの StandardMinute の 2 番目。
例: 59
StandardYear
-
データ型: uint32
-
アクセスの種類: 読み取り専用
-
修飾子: MappingStrings ("Win32API|時間構造|TIME_ZONE_INFORMATION|StandardDate|wYear")
標準時が有効な年。 このプロパティは必須ではありません。
例: 1997
注釈
Win32_TimeZone クラスは、CIM_Settingから派生します。
WMI クエリを記述するときに、標準の日時形式 (2002 年 10 月 18 日など) を使用することはできません。 代わりに、クエリで使用される日付を UTC 形式に変換する必要があります。 これには、2 つの手順が必要です。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 日などの標準日付を UTC 日付に変換する必要があります。 標準の日付を UTC 日付に変換するには、年、月、日などの VBScript 日付関数を使用して、UTC 日付を構成する個々のコンポーネントを分離できます。 これらのコンポーネントに個別の値を設定した後は、他の文字列値と同じ方法でこれらの値を連結できます。 UTC 日付は、GMT オフセットを末尾に追加する必要があるため、文字列として扱われます。 日付が数値と見なされた場合、この値は次のようになります。
20011018113047.000000-480
誤って数式として扱われます (わかりやすくするためにかっこが追加されます)。
(20011018113047.000000) - (480)
たとえば、日付 10/18/2002 では、個々のコンポーネントは次のようになります。
- 年: 2002 年
- 月: 10
- 日: 18
スクリプトでは、これらの 3 つの値 、文字列 "113047.000000" (ミリ秒を含む時間を表す) と GMT オフセットを組み合わせて UTC 日付を取得する必要があります。 たとえば、 (わかりやすくするためにかっこをもう一度追加):
(2002) & (10) & (18) & (113047.000000) & (-480)
注意
VBScript 関数 Hour、Minute、Second を使用して、UTC 日付の時刻部分を変換できます。 したがって、午前 11 時 30 分 47 分などの時刻は、113047に変換されます。
1 つの複雑な要素があります。 月は文字列の 5 と 6 の位置を占める必要があります。日は、7 と 8 の位置を取る必要があります。 これは、月 10 と 18 日では問題ありません。 しかし、7 月 5 日 (月 7 日、5 日目) に必要なポジションを埋めるにはどうすればよいでしょうか。 答えは、各値に先頭にゼロを追加し、7 を 07 に、5 を 05 に変更します。
これを行うには、VBScript Len 関数を使用して、月と日の長さ (文字数) をチェックします。 長さが 1 の場合 (1 文字しかないことを意味します)、先頭に 0 を追加します。 したがって:
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] |
|
こちらもご覧ください