CIM_DATETIME
您可以使用 WMI 和 CIM 特有的兩種固定長度格式之一,存取 WMI 中的所有 通用資訊模型 (CIM) 日期和時間。 在腳本中,使用 SWbemDateTime 對象將這些物件轉換成一般日期和時間。
下列各節說明如何使用 WMI 日期和時間格式。
格式
下表列出 WMI 所使用的兩種日期和時間格式。
格式 | 描述 |
---|---|
DATETIME yyyymmddHHMMSS.mmmmsUUUU |
儲存 CIM DATETIME 值的格式。 此格式與地區設定無關,因此您可以撰寫在任何計算機上執行的腳本。 您必須使用此格式,以 Managed 物件格式 (MOF) 定義日期和時間,或使用適用於 WMI 的 COM API 或 WMI 的腳本 API 寫入實例時。 如需詳細資訊,請參閱 修改 Instance 屬性。 |
格式僅適用於 WMI 查詢語言 (WQL) 查詢。 yyyy-mm-dd HH:MM:SS:mmm |
此格式可用於使用 SWbemDateTime 方法的腳本。 如需詳細資訊,請參閱使用 WQL 查詢 WMI 或查詢。 此格式與地區設定無關。 年、月和日的順序取決於用戶會話的區域和語言格式設定。 例如,雖然 美國 英文的預設值是 “mm-dd-y 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) 的一天兩位數小時。 |
MM | 小時 (00 到 59) 中的兩位數分鐘。 |
SS | 分鐘 (00 到 59) 中的兩位數秒數。 |
mmmmmm | 秒(000000到999999)的六位數微秒數。 您的實作不需要支援使用此欄位的評估。 不過,此欄位必須一律存在,才能保留字串的固定長度本質。 |
mmm | 分鐘中的三位數毫秒數(000 到 999)。 |
s | 加號 (+) 或減號 (-) 表示國際標準時報 (UTC) 的正負位移。 |
UUU | 三位數位移,表示原始時區偏離UTC的分鐘數。 對於 WMI,建議您將時間轉換為 GMT(UTC 位移為零),但並非必要。 |
您必須輸入所有具有指定長度的欄位,並視類型使用前置零。 不過,使用星號來表示未使用的字段或做為通配符值。 除了查詢的 WHERE 子句之外,您可以使用星號 。 例如,具有未指定年份的日期和時間可以在任何年份發生。 如果您想要讓欄位保持未指定,則必須以星號取代整個欄位。
下列範例描述星號的有效和無效用法:
- 19980416******.000000+*** (法律)
- 1998-04-16 ******:*** (非法)
- 199*0416******.000000+*** (非法)
- 199*-04-16 ******:*** (非法)
如果使用 datetime 來代表特定時間點,則其所有字段都應該包含數據。 如果用來代表時間範圍,則只有傳達持續時間所需的欄位應該包含數據。
下列範例描述「第一個四月」:相對於某些未指定年份的日期,但如果度量詳細數據層級為一天,仍為已定義的點。
- ****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 所使用的自動化變體日期時間值。 下表列出轉換方法。