CIM_DATETIME

WMI と CIM に固有の 2 つの固定長形式のいずれかを使用して、WMI 内のすべての Common Information Model (CIM) の日付と時刻にアクセスできます。 スクリプトでは、SWbemDateTime オブジェクトを使用して、それらを通常の日付と時刻に変換します。

次のセクションでは、WMI の日付と時刻の形式を使用する方法について説明します。

Format

次の表に、WMI で使用される 2 つの日付と時刻の形式を示します。

Format 説明
DATETIME
yyyymmddHHMMSS.mmmmmmsUUU
CIM の DATETIME 値が格納される形式。 この形式はロケールに依存しないため、どのコンピューターでも実行されるスクリプトを記述できます。 この形式は、Managed Object Format (MOF) で日付と時刻を定義するため、または WMI 用 COM APIWMI 用スクリプト API を使用してインスタンスに書き込むときに使用する必要があります。 詳細については、「インスタンス プロパティの変更」を参照してください。
WMI Query Language (WQL) のクエリでのみ有効な形式。
yyyy-mm-dd HH:MM:SS:mmm
この形式は、SWbemDateTime メソッドが使用されているスクリプトで使用できます。 詳細については、「WMI のクエリ」または「WQL を使用したクエリ」を参照してください。 この形式はロケールに依存します。 年、月、日の順序は、ユーザー セッションの地域と言語の形式の設定によって決まります。 たとえば、米国英語の既定値は "mm-dd-yyyy hh:mm:ss:mmm" ですが、他のほとんどの国または地域の形式は "yyyy-mm-dd hh:mm:ss:mmm" です。

次の表に、形式のフィールドを示します。

フィールド 説明
yyyy 年を表す 4 桁の数字 (0000 から 9999)。 実装では、サポートされる範囲を制限できます。 たとえば、実装では、1980 年から 2099 年までの年のみをサポートできます。
mm 月を表す 2 桁の数字 (01 から 12)。
dd 日にちを表す 2 桁の数字 (01 から 31)。 この値は、指定の月に適している必要があります。 たとえば、2 月 31 日は無効です。 ただし、実装では有効なデータかどうかをチェックする必要はありません。
HH 24 時間制を使用した時間を表す 2 桁の数字 (00 から 23)。
mm 分を表す 2 桁の数字 (00 から 59)。
SS 秒を表す 2 桁の数字 (00 から 59)。
mmmmmm マイクロ秒を表す 6 桁の数字 (000000 から 999999)。 実装では、このフィールドを使用した評価をサポートする必要はありません。 ただし、文字列の固定長の性質を維持するために、このフィールドは常に存在する必要があります。
mmm ミリ秒を表す 3 桁の数字 (000 から 999)。
s 協定世界時 (UTC) からの正または負のオフセットを示すプラス記号 (+) またはマイナス記号 (-)。
UUU 発生元タイム ゾーンの UTC からの偏差を表す分数を示す 3 桁のオフセット。 WMI では、時刻を GMT (UTC オフセット 0) に変換することが推奨されていますが、必須ではありません。

種類に応じて先頭に 0 を使用して、指定された長さですべてのフィールドを入力する必要があります。 ただし、未使用のフィールドを示すためやワイルドカード値として、アスタリスクを使用します。 アスタリスク (*) は、クエリの WHERE 句を除くすべての場所で使用できます。 たとえば、年が指定されていない日付と時刻は、どの年でも発生する可能性があります。 フィールドを指定しない場合は、フィールド全体をアスタリスクに置き換える必要があります。

次の例では、アスタリスクの有効な使用法と無効な使用法について説明します。

  • 19980416******.000000+*** (有効)
  • 1998-04-16 ******:*** (無効)
  • 199*0416******.000000+*** (無効)
  • 199*-04-16 ******:*** (無効)

datetime を使用して特定の時点を表す場合は、そのすべてのフィールドにデータを含める必要があります。 時間の範囲を表すために使用される場合は、期間を伝えるために必要なフィールドにのみデータを含める必要があります。

次の例では、"April first" (4 月 1 日) について説明します。ある未指定の年を基準とした日付ですが、測定の詳細レベルが 1 日の場合は定義されたポイントです。

  • ****0401******.000000+***
  • ****-04-01 ******:*** (無効)

UTC オフセットと GMT の設定

次の例では、プラス記号またはマイナス記号の後にアスタリスクを UUU フィールドに入れることで、タイム ゾーンなしで時刻を定義する方法について説明します。

  • 19980401135809.000000+***
  • 19980401135809.000000-***
  • 1998-04-01 13:58:09:*** (無効)

アプリケーションは、、ゾーン指定されていない日付と時刻を、実行中のオペレーティング システム内のローカルで抽象的なクロノメーターへの参照と解釈します。 たとえば、ポータブル コンピューターは、設定が地理的タイム ゾーンに対応している場合もあれば対応していない場合もある内部クロックを持っている場合があります。 ゾーン指定されていない時刻を解釈するには、ローカル タイム ゾーンではなく、現在の抽象的なタイム ソースのタイム ゾーンを置き換えます。

クエリ内の日付と時刻の UTC オフセットの意味については、特別な考慮が必要です。 一般に、同等、より大きい、またはより小さいの比較は、2 つの日付と時刻で同じ UTC オフセットが使用されている場合に機能します。 タイム ゾーン オフセットが異なる日付と時刻を処理する場合は、最初にその日付と時刻を GMT に変換する必要があります。

1 つ以上のサブフィールドにアスタリスクが指定された相対日付と時刻が含まれたクエリは、同等性の比較を行う場合にのみ WMI にとって意味があります。 また、WMI では、ワイルドカードとしてアスタリスクを使用することはできません。 代わりに、WMI では文字単位で相対日付と時刻が比較されます。

次の例は、WMI のクエリでは同等と見なされない 2 つの日付を示しています。

  • 19980401135809.000000+***
  • 19980401135809.000000+000

FILETIME またはVT_DATE 形式への変換

CIM の DATETIME 形式は WMI 内でのみ使用されます。 SWbemDateTime スクリプト オブジェクトのメソッドを呼び出すことで、WMI 形式と FILETIME またはVT_DATE 形式の間で変換できます。 FILETIMEdatetime 構造体は、32 ビット Windows オペレーティング システムで使用される 64 ビット値です。 VT_DATE 形式は、Visual Basic と ActiveX で使用されるオートメーション バリアントの datetime 値です。 次の表に変換メソッドを示します。

メソッド 説明
SWbemDateTime.GetFileTime FILETIME 形式で DATETIME 値を取得します。
SWbemDateTime.GetVarDate VT_DATE 形式で DATETIME 値を取得します。
SWbemDateTime.SetFileTime FILETIME 日付を入力として使用して DATETIME プロパティを設定します。
SWbemDateTime.SetVarDate VT_DATE 日付を入力として使用して DATETIME プロパティを設定します。

日付と時刻の形式

WMI について

WMI タスク: 日付と時刻

間隔の形式

SWbemObject.Put_

SWbemServicesEx.Put

SWbemDateTime

IWbemClassObject::Put

IWbemServices::PutClass