CIM_DATETIME

您可以使用 WMI 和 CIM 特有的兩種固定長度格式之一,存取 WMI 中的所有 通用訊息模型 (CIM) 日期和時間。 在腳本中,使用 SWbemDateTime 物件將這些物件轉換成一般日期和時間。

下列各節說明如何使用 WMI 日期和時間格式。

格式

下表列出 WMI 所使用的兩個日期和時間格式。

格式 描述
Datetime
yyyymmddHHMMSS.mmmmsUUU
CIM DATETIME 值儲存的格式。 此格式與地區設定無關,因此您可以撰寫在任何電腦上執行的腳本。 您必須使用此格式,以 Managed 物件格式定義日期和時間, (MOF) ,或使用 WMI 的 COM APIWMI 的腳本 API寫入實例時。 如需詳細資訊,請參閱 修改實例屬性
只有在 WMI 查詢語言 (WQL) 查詢中才有效。
yyyy-mm-dd HH:MM:SS:mmm
此格式可用於使用 SWbemDateTime 方法的腳本。 如需詳細資訊,請參閱使用 WQL查詢 WMI或查詢。 此格式與地區設定無關。 年、月和日的順序取決於使用者會話的區域和語言格式設定。 例如,雖然美國英文的預設值是 「mm-dd-yyyy hh:mm:ss:mmm」,但大部分國家或地區的格式為 「yyyy-mm-dd hh:mm:ss:mmm」。

下表列出格式的欄位。

欄位 描述
yyyy 四位數年份 (0000 到 9999) 。 您的實作可以限制支援的範圍。 例如,實作只能支援 1980 年到 2099 年。
mm 兩位數的月份 (01 到 12) 。
dd 月份的兩位數日期 (01 到 31) 。 此值必須適用于月份。 例如,2 月 31 日無效。 不過,您的實作不需要檢查有效的資料。
HH 使用 24 小時制的兩位數小時, (00 到 23) 。
毫米 小時 (00 到 59) 的兩位數分鐘。
SS 分鐘中的兩位數秒數 (00 到 59) 。
mmmmmm 第二個 (000000 到999999) 的六位數微秒數。 您的實作不需要支援使用此欄位進行評估。 不過,此欄位必須一律存在,才能保留字元串的固定長度本質。
mmm 分鐘 (000 到 999) 的三位數毫秒數。
s 加號 (+) 或減號 () ,表示與國際標準時間 (UTC) 的正數或負數位移。
UUU 三位數位移,指出原始時區與 UTC 相隔的分鐘數。 對於 WMI,建議您,但不需要將時間轉換成 GMT (UTC 位移為零) 。

您必須輸入所有具有指定長度的欄位,並針對類型使用前置零。 不過,使用星號表示未使用的欄位或萬用字元值。 除了查詢 的 WHERE 子句以外,您可以使用星號 (*) 。 例如,具有未指定年份的日期和時間可以在任何年份發生。 如果您想要讓欄位保持未指定,您必須以星號取代整個欄位。

下列範例描述星號的有效和無效用法:

  • 19980416 19980416//.000000+ (法律)
  • 1998-04-16 :*** (不合法的)
  • 199*0416≧.000000+** (不合法的)
  • 199*-04-16 :*** (不合法的)

如果日期時間用來代表特定時間點,則其所有欄位都應該包含資料。 如果用來表示某個時間範圍,則只有傳達持續時間所需的欄位應該包含資料。

下列範例描述「第一個四月」:相對於某些未指定年份的日期,但如果度量詳細資料層級為一天,仍為定義點。

  • 0401******.000000+***
  • -04-01 :*** (不合法的)

設定 UTC 位移和 GMT

下列範例說明如何在加號或減號之後,將星號放在 UUU 欄位中,以定義沒有時區的時間:

  • 19980401135809.000000+***
  • 19980401135809.000000-***
  • 1998-04-01 13:58:09:* (不合法的)

應用程式會解譯執行作業系統內本機抽象計時的未分區日期和時間參考。 例如,可攜式電腦可以有其設定可能或未對應至地理時區的內部時鐘。 您可以藉由取代目前抽象時間來源的時區,而不是當地時區來解譯未分區的時間。

您應該特別考慮 UTC 位移的意義,以及查詢中的日期和時間。 一般而言,如果日期和時間使用相同的 UTC 位移,則相等、大於或小於比較會在兩個日期和時間之間運作。 處理發生不同時區位移的日期和時間時,您應該先將日期和時間轉換為 GMT。

與一或多個子欄位中具有星號的相對日期和時間相關的查詢,只有在與等價比較時,才對 WMI 有意義。 此外,WMI 不允許使用星號作為萬用字元。 相反地,WMI 會比較以字元為依據的相對日期和時間。

下列範例描述 WMI 查詢不考慮相等的兩個日期:

  • 19980401135809.000000+***
  • 19980401135809.000000+000

轉換成 FILETIME 或VT_DATE格式

CIM DATETIME 格式只能在 WMI 中使用。 您可以藉由呼叫 SWbemDateTime 腳本物件的 方法,來轉換成 WMI 格式和 FILETIME 或VT_DATE格式。 FILETIME日期時間結構是 32 位 Windows 作業系統使用的 64 位值。 VT_DATE格式是 Visual Basic 和 ActiveX 所使用的自動化變體日期時間值。 下表列出轉換方法。

方法 描述
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::P ut

IWbemServices::P utClass