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

このオペレーティング システムで標準時から夏時間への切り替えが行われる場合の DaylightMonthDaylightDayOfWeek

例: 切り替え日 (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")

オペレーティング システムで夏時間から標準時への移行が発生した場合の StandardMonthStandardDayOfWeek

切り替え日 (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

アクセスの種類: 読み取り専用

修飾子: keyMaxLen (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
CIMWin32.mof
[DLL]
CIMWin32.dll

こちらもご覧ください

CIM_Setting

オペレーティング システム クラス

SWbemDateTime

日付と時刻の形式

WMI タスク: 日付と時刻