CIM_DATETIME

Puede acceder a todas las fechas y horas del Modelo de información común (CIM) en WMI mediante uno de los dos formatos de longitud fija específicos de WMI y CIM. En el scripting, use el objeto SWbemDateTime para convertirlos en fechas y horas normales.

En las secciones siguientes se describe cómo usar los formatos de fecha y hora de WMI.

Formato

En la tabla siguiente se enumeran los dos formatos de fecha y hora usados por WMI.

Formato Descripción
DATETIME
aaaammddHHMMSS.mmmmmmsUUU
Formato en el que se almacenan los valores DATETIME de CIM. Este formato es independiente de la configuración regional, por lo que puede escribir un script que se ejecute en cualquier máquina. Debe usar este formato para definir una fecha y hora en Managed Object Format (MOF), o bien al escribir en una instancia mediante la API COM para WMI o la API de scripting para WMI. Para más información, vea Modificación de una propiedad de instancia.
Formato solo válido en las consultas del lenguaje de consulta de WMI (WQL).
aaaa-mm-dd HH:MM:SS:mmm
Este formato se puede usar en scripts que usan los métodos SWbemDateTime. Para más información, vea Consulta de WMI o Consulta con WQL. Este formato no es independiente de la configuración regional. El orden de año, mes y día depende de los valores de formato regional y de idioma de la sesión de usuario. Por ejemplo, mientras que el valor predeterminado para inglés de Estados Unidos es "mm-dd-aaaa hh:mm:ss:mmm", el formato de la mayoría de los demás países o regiones es "aaaa-mm-dd hh:mm:ss:mmm".

En la tabla siguiente se enumeran los campos en los formatos.

Campo Descripción
yyyy Año de cuatro dígitos (de 0000 a 9999). La implementación puede restringir el intervalo admitido. Por ejemplo, una implementación solo puede admitir los años de 1980 a 2099.
mm Mes de dos dígitos (del 01 al 12).
dd Día de dos dígitos del mes (de 01 a 31). Este valor debe ser adecuado para el mes. Por ejemplo, el 31 de febrero no es válido. Pero la implementación no tiene que comprobar si hay datos válidos.
HH Hora de dos dígitos del día con el reloj de 24 horas (de 00 a 23).
MM Minuto de dos dígitos de la hora (de 00 a 59).
SS Número de dos dígitos de segundos del minuto (de 00 a 59).
mmmmmm Número de seis dígitos de microsegundos en el segundo (de 000000 a 999999). La implementación no tiene que admitir la evaluación mediante este campo. Pero este campo siempre debe estar presente para conservar la naturaleza de longitud fija de la cadena.
mmm Número de tres dígitos de milisegundos en el minuto (de 000 a 999).
s Signo más (+) o signo menos (-) para indicar un desplazamiento positivo o negativo con respecto a las horas universales coordinadas (UTC).
UUU Desplazamiento de tres dígitos que indica el número de minutos que la zona horaria de origen se desvía de UTC. Para WMI, se recomienda, pero no es necesario, convertir las horas a GMT (un desplazamiento UTC de cero).

Debe escribir todos los campos con la longitud indicada, y usar ceros a la izquierda según corresponda para el tipo. Pero use asteriscos para indicar campos sin usar o como un valor comodín. Puede usar un asterisco (*) en todas partes, excepto en la cláusula WHERE de una consulta. Por ejemplo, una fecha y hora con un año no especificado puede aparecer en cualquier año. Si quiere dejar un campo sin especificar, debe reemplazar todo el campo por asteriscos.

En los ejemplos siguientes se describen los usos válidos y no válidos de los asteriscos:

  • 19980416******.000000+*** (válido)
  • 1998-04-16 ******:*** (No válido)
  • 199*0416******.000000+*** (Válido)
  • 199*-04-16 ******:*** (No válido)

Si se usa una fecha y hora para representar un momento dado específico, todos sus campos deben incluir datos. Si se usa para representar un intervalo de tiempo, solo los campos necesarios para transmitir la duración deben incluir datos.

En el ejemplo siguiente se describe "April first": una fecha relativa a un año sin especificar, pero que sigue siendo un punto definido si el nivel de detalle de medida es un día.

  • ****0401******.000000+***
  • ****-04-01 ******:*** (No válido)

Establecimiento del desplazamiento UTC y GMT

En los ejemplos siguientes se describe cómo definir una hora sin zona horaria mediante la colocación de asteriscos en el campo UUU después del signo más o menos:

  • 19980401135809.000000+***
  • 19980401135809.000000-***
  • 1998-04-01 13:58:09:*** (No válido)

Una aplicación interpreta una referencia de fecha y hora sin zona como un cronómetro abstracto local dentro del sistema operativo en ejecución. Por ejemplo, los equipos portátiles pueden tener relojes internos cuya configuración se puede corresponder, o no, a la zona horaria geográfica. Puede interpretar la hora sin zona si sustituye la zona horaria del origen de hora abstracta actual en lugar de la zona horaria local.

Debe tener en cuenta el significado del desplazamiento UTC con fechas y horas en las consultas. En general, la equivalencia, las comparaciones de mayor que o menor que funcionan entre dos fechas y horas si usan el mismo desplazamiento UTC. Al trabajar con fechas y horas que se producen con diferentes desplazamientos de zona horaria, primero debe convertir las fechas y horas a GMT.

Las consultas que implican fechas y horas relativas con asteriscos en uno o varios subcampos solo son significativas para WMI cuando se compara la equivalencia. Además, WMI no permite el uso de asteriscos como caracteres comodín. En su lugar, WMI compara las fechas y horas relativas por cada carácter.

En los ejemplos siguientes se describen dos fechas que una consulta WMI no considera iguales:

  • 19980401135809.000000+***
  • 19980401135809.000000+000

Conversión a formato FILETIME o VT_DATE

El formato DATETIME de CIM solo se usa en WMI. Puede convertir a y desde el formato WMI y el formato FILETIME o VT_DATE si llama a los métodos del objeto de scripting SWbemDateTime. Una estructura FILETIMEdatetime es un valor de 64 bits que se usa en los sistemas operativos Windows de 32 bits. VT_DATE formato es un valor datetime variante de automatización utilizado por Visual Basic y ActiveX. En la tabla siguiente se muestran los métodos de conversión.

Método Descripción
SWbemDateTime.GetFileTime Obtiene un valor DATETIME en formato FILETIME.
SWbemDateTime.GetVarDate Obtiene un valor DATETIME en VT_DATE formato.
SWbemDateTime.SetFileTime Establece una propiedad DATETIME con una fecha FILETIME como entrada.
SWbemDateTime.SetVarDate Establece una propiedad DATETIME con una fecha VT_DATE como entrada.

Formato de fecha y hora

Acerca de WMI

Tareas de WMI: fechas y horas

Formato de intervalo

SWbemObject.Put_

SWbemServicesEx.Put

SWbemDateTime

IWbemClassObject::Put

IWbemServices::PutClass