CIM _ 日期时间

你可以使用特定于 WMI 和 CIM 的两个固定长度格式之一来访问 WMI 中的所有 通用信息模型 (CIM) 日期和时间。 在脚本中,使用 SWbemDateTime 对象将这些转换为常规日期和时间。

以下部分介绍如何使用 WMI 日期和时间格式。

格式

下表列出了 WMI 使用的两种日期和时间格式。

格式 描述

yyyymmddHHMMSS. mmmmmmsUUU
CIM 日期时间 值的存储格式。 此格式与区域设置无关,因此你可以编写在任何计算机上运行的脚本。 必须使用此格式在 托管对象格式 (MOF)中定义日期和时间,或者在使用 适用于 WMI 的 COM APIwmi 的脚本 API写入到实例时,使用此格式。 有关详细信息,请参阅 修改实例属性
格式仅在 WMI 查询语言 (WQL) 查询中有效。
yyyy-mm-dd HH: MM: SS: mmm
此格式可用于使用 SWbemDateTime 方法的脚本。 有关详细信息,请参阅 查询 WMI利用 WQL 进行查询。 此格式不与区域设置无关。 年、月和日的顺序取决于用户会话的区域和语言格式设置。 例如,尽管美国英语的默认值为 "mm-dd hh: mm: ss: yyyy: mmm",但大多数其他国家或地区的格式为 "yyyy-mm-dd hh: mm: ss: mmm"。

下表列出了格式中的字段。

字段 描述
yyyy 四位数年份 (0000 到 9999) 。 你的实现可以限制受支持的范围。 例如,实现只能支持年份1980到2099。
mm 两位数的月份 (01 到 12) 。
dd 两位数的月份日期 (01 到 31) 。 此值必须适用于月份。 例如,二月份31无效。 但是,实现不需要检查是否存在有效数据。
HH 使用24小时制的两位数小时 (00 到 23) 。
MM (00 到 59) ,在1小时内为两位数的分钟数。
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 * * * * * * : * * * (非法)

如果日期时间用于表示特定时间点,则其所有字段应包含数据。 如果用来表示时间范围,则只有传达持续时间所需的字段应包含数据。

下面的示例描述了 "4 月第一次":相对于某个未指定年份,但如果度量详细信息的级别为一天的日期,则为。

  • ****0401 * * * * * * +***
  • ****-04-01 * * * * * * : * * * (非法)

设置 UTC 偏移量和 GMT

下面的示例说明了如何通过在 UUU 字段中将星号置于加号或减号之后来定义没有时区的时间:

  • 19980401135809.000000 +***
  • 19980401135809.000000-***
  • 1998-04-01 13:58:09: * * * (非法)

应用程序将 unzoned 日期和时间引用解释为正在执行的操作系统中的本地抽象 chronometer。 例如,便携式计算机可以具有内部时钟,其设置可能与地理时区均不对应。 可以通过用当前抽象时间源的时区(而非本地时区)来解释 unzoned 时间。

在查询中,您应特别注意 UTC 偏移量与日期和时间的含义。 通常,如果日期和时间使用相同的 UTC 偏移量,则两个日期和时间之间的等效性、大于或小于比较工作。 处理具有不同时区偏移量的日期和时间时,应该首先将日期和时间转换为 GMT。

在一个或多个子字段中涉及带有星号的相对日期和时间的查询仅在比较等效项时对 WMI 有意义。 此外,WMI 不允许使用星号作为通配符。 相反,WMI 会比较每个字符的相对日期和时间。

下面的示例描述了 WMI 查询不考虑相等的两个日期:

  • 19980401135809.000000 +***
  • 19980401135809.000000 + 000

转换为 FILETIME 或 VT _ 日期格式

CIM 日期时间 格式仅在 WMI 内使用。 可以 _ 通过调用 SWbemDateTime 脚本对象的方法,从 WMI 格式转换为,也可以从 FILETIME 或 VT 日期格式转换。 FILETIME datetime 结构是32位 Windows 操作系统使用的64位值。 VT _ 日期格式是 Visual Basic 和 ActiveX 使用的自动化变体日期时间值。 下表列出了转换方法。

方法 描述
SWbemDateTime. Getfiletime 期间 获取采用 FILETIME格式的 DATETIME值。
SWbemDateTime. GetVarDate 获取采用 VT 日期格式的 日期时间 值 _ 。
SWbemDateTime. SetFileTime 使用 FILETIME日期作为输入来设置 DATETIME属性。
SWbemDateTime. SetVarDate 使用 VT _ 日期日期作为输入来设置 DATETIME 属性。

日期和时间格式

关于 WMI

WMI 任务:日期和时间

间隔格式

SWbemObject_

SWbemServicesEx

SWbemDateTime

IWbemClassObject::P

IWbemServices::P utClass