CIM_DATETIME
WMI と CIM に固有の 2 つの固定長形式のどちらかを使用すると、WMI で Common Information Model (CIM) のすべての日付と時刻にアクセスできます。 スクリプトの作成時、SWbemDateTime オブジェクトを使用して、これらを通常の日付と時刻に変換します。
次のセクションでは、WMI の日付と時刻の形式を使用する方法について説明します。
形式
次の表に、WMI で使用される 2 つの日付と時刻の形式を示します。
書式 | 説明 |
---|---|
DATETIME yyyymmddHHMMSS.mmmmmmsUUU |
CIM DATETIME 値が格納される形式。 この形式はロケールに依存しないため、任意のコンピューターで実行されるスクリプトを記述できます。 管理オブジェクト フォーマット (MOF) で日付と時刻を定義するには、あるいは WMI 用の COM API または WMI 用の Scripting API を使用してインスタンスに書き込む場合は、この形式を使用する必要があります。 詳細については、「インスタンス プロパティの変更」を参照してください。 |
WMI クエリ言語 (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 | 1 分あたりの秒数を表す 2 桁の数字 (00 から 59)。 |
mmmmmm | 1秒あたりのマイクロ秒数を表す 6 桁の数字 (000000 から 999999)。 実装時に、このフィールドを使用して評価をサポートする必要はありません。 ただし、文字列の固定長の性質を維持するには、このフィールドが常に存在している必要があります。 |
mmm | 1 分あたりのマイクロ秒数を表す 3 桁の数字 (000 から 999)。 |
s | 協定世界時 (UTC) からの正または負のオフセットを示すプラス記号 (+) またはマイナス符号 (-)。 |
UUU | 元のタイム ゾーンが UTC から逸脱している分数を示す 3 桁のオフセット。 WMI の場合、時刻を GMT (UTC オフセット 0) に変換することをお勧めしますが、必須ではありません。 |
型に応じた数のゼロを先頭に付け、指定された長さですべてのフィールドを入力する必要があります。 ただし、未使用のフィールドを示す場合やワイルドカード値として使用する場合は、アスタリスクを使用します。 クエリの WHERE 句を除くすべての場所でアスタリスク (*) を使用できます。 たとえば、年が指定されていない日付と時刻は、どの年でも発生する可能性があります。 フィールドを指定しない場合は、フィールド全体をアスタリスクに置き換える必要があります。
次の例では、アスタリスクの有効な使用方法と無効な使用方法について説明します。
- 19980416******.000000+*** (有効)
- 1998-04-16 ******:*** (無効)
- 199*0416******.000000+*** (無効)
- 199*-04-16 ******:*** (無効)
datetime を使用して特定の時点を表す場合、そのすべてのフィールドにデータを含める必要があります。 時間の範囲を表すために使用する場合は、期間を伝えるために必要なフィールドにのみデータを含める必要があります。
次の例では、"4 月 1 日" について説明します。不特定の年に関係する日付ですが、測定の詳細レベルが 1 日である場合は確定ポイントでもあります。
- ****0401******.000000+***
- ****-04-01 ******:*** (無効)
UTC オフセットと GMT の設定
次の例では、プラス記号またはマイナス記号の後の UUU フィールドにアスタリスクを配置して、タイムゾーンのない時刻を定義する方法を説明します。
- 19980401135809.000000+***
- 19980401135809.000000-***
- 1998-04-01 13:58:09:*** (無効)
アプリケーションは、実行中のオペレーティング システム内にあるローカルの抽象的なクロノメーターに対して、ゾーン化されていない日付と時刻の参照を解釈します。 たとえば、ポータブル コンピューターには内部時計を搭載できますが、その設定は地理的タイム ゾーンに対応する場合と対応していない場合があります。 ローカル タイム ゾーンではなく、現在の抽象的なタイム ソースのタイム ゾーンを代用すると、ゾーン化されていない時刻を解釈できます。
クエリ内の日付と時刻を使用した UTC オフセットの意味については、特に考慮する必要があります。 一般に、同等、より大きい、またはより小さいの比較は、日付と時刻が同じ UTC オフセットを使用している場合に 2 つの日付と時刻の間で機能します。 異なるタイム ゾーンのオフセットで発生する日付と時刻を処理する場合は、最初に日付と時刻を GMT に変換する必要があります。
アスタリスクのある相対的な日付と時刻が 1 つ以上のサブフィールドに含まれているクエリは、同等性を比較する場合にのみ、WMI にとって意味があります。 さらに、WMI では、ワイルドカードとしてアスタリスクを使用することはできません。 代わりに、WMI は相対的な日付と時刻を文字単位で比較します。
次の例では、WMI クエリが等しいとみなさない 2 つの日付について説明します。
- 19980401135809.000000+***
- 19980401135809.000000+000
FILETIME 形式または VT_DATE 形式への変換
CIM DATETIME 形式は WMI 内でのみ使用されます。 SWbemDateTime スクリプト オブジェクトのメソッドを呼び出すと、WMI 形式と FILETIME 形式または VT_DATE 形式との間で変換できます。 FILETIME datetime 構造体は、32 ビット Windows オペレーティング システムで使用される 64 ビット値です。 VT_DATE 形式は、Visual Basic と ActiveX で使用される自動化バリアントの datetime 値です。 次の表に、変換方法を示します。
Method | 説明 |
---|---|
SWbemDateTime.GetFileTime | FILETIME 形式の DATETIME 値を取得します。 |
SWbemDateTime.GetVarDate | VT_DATE形式の DATETIME 値を取得します。 |
SWbemDateTime.SetFileTime | FILETIME 日付を入力として使用して、DATETIME プロパティを設定します。 |
SWbemDateTime.SetVarDate | VT_DATE 日付を入力として使用して、DATETIME プロパティを設定します。 |