CIM_DATETIME

Você pode acessar todas as datas e horas do CIM (Common Information Model) no WMI usando um dos dois formatos de comprimento fixo específicos do WMI e do CIM. No script, use o objeto SWbemDateTime para convertê-los em datas e horas regulares.

As seções a seguir descrevem como usar os formatos de data e hora do WMI.

Formatar

A tabela a seguir lista os dois formatos de data e hora usados pelo WMI.

Formatar Descrição
DATETIME
yyyymmddHHMMSS.mmmmmmsUUU
Formato no qual os valores de DATETIME do CIM são armazenados. Esse formato é independente da localidade para que você possa escrever um script que seja executado em qualquer computador. Você deve usar esse formato para definir uma data e hora no MOF (Managed Object Format) ou ao gravar em uma instância usando a API COM para WMI ou a API de Script para WMI. Para obter mais informações, consulte Modificar uma propriedade de instância.
Formato válido somente em consultas WQL (WMI Query Language).
yyyy-mm-dd HH:MM:SS:mmm
Esse formato pode ser usado em scripts que usam os métodos SWbemDateTime. Para obter mais informações, confira Como consultar o WMI ou Como consultar com WQL. Esse formato não é independente da localidade. A ordem do ano, mês e dia dependerá da configuração de formato regional e de idioma da sessão do usuário. Por exemplo, embora o padrão para inglês dos Estados Unidos seja "mm-dd-aaaa hh:mm:ss:mmm", o formato para a maioria dos outros países ou regiões é "aaaa-mm-dd hh:mm:ss:mmm".

A tabela a seguir lista os campos nos formatos.

Campo Descrição
aaaa Ano de quatro dígitos (0000 a 9999). Sua implementação pode restringir o intervalo compatível. Por exemplo, uma implementação pode ser compatível apenas com os anos de 1980 a 2099.
mm Mês com dois dígitos (01 a 12).
dd Dia do mês com dois dígitos (01 a 31). Esse valor deve ser apropriado para o mês. Por exemplo, 31 de fevereiro não é válido. No entanto, sua implementação não precisa verificar se os dados são válidos.
HH Hora do dia com dois dígitos usando o relógio de 24 horas (00 a 23).
MM Minuto de dois dígitos na hora (00 a 59).
SS Número de dois dígitos dos segundos no minuto (00 a 59).
mmmmmm Número de seis dígitos de microssegundos no segundo (000000 a 999999). Sua implementação não precisa dar suporte à avaliação usando esse campo. No entanto, esse campo deve estar sempre presente para preservar a natureza de comprimento fixo da cadeia de caracteres.
mmm Número de três dígitos dos milissegundos no minuto (000 a 999).
s Sinal de adição (+) ou sinal de subtração (-) para indicar um deslocamento positivo ou negativo em relação ao Tempo Universal Coordenado (UTC).
UUU Deslocamento de três dígitos indicando o número de minutos que o fuso horário de origem desvia do UTC. No WMI, é recomendável, mas não necessário, converter tempos em GMT (um deslocamento do UTC igual zero).

Você deve inserir todos os campos com o comprimento indicado, usando zeros à esquerda conforme apropriado para o tipo. No entanto, use asteriscos para indicar campos não utilizados ou como um valor curinga. Você pode usar um asterisco (*) em todos os lugares, exceto na cláusula WHERE de uma consulta. Por exemplo, uma data e hora com um ano não especificado pode ocorrer em qualquer ano. Se você quiser deixar um campo não especificado, deverá substituir todo o campo por asteriscos.

Os exemplos a seguir descrevem usos válidos e inválidos de asteriscos:

  • 19980416******.000000+*** (permitido)
  • 1998-04-16 ******:*** (não permitido)
  • 199*0416******.000000+*** (não permitido)
  • 199*-04-16 *****:*** (não permitido)

Se um datetime for usado para representar um ponto específico no tempo, todos os seus campos deverão incluir dados. Se for usado para representar um intervalo de tempo, somente os campos necessários para transmitir a duração deverão incluir dados.

O exemplo a seguir descreve "Primeiro de abril": uma data relativa a algum ano não especificado, mas, ainda assim, um ponto definido se o nível de detalhes de medida for um dia.

  • ****0401******.000000+***
  • ****-04-01 ******:*** (não permitido)

Definindo o deslocamento do UTC e GMT

Os seguintes exemplos descrevem como você pode definir um horário sem fuso horário colocando asteriscos no campo UUU após o sinal de mais ou menos:

  • 19980401135809.000000+***
  • 19980401135809.000000-***
  • 1998-04-01 13:58:09:*** (não permitido)

Um aplicativo interpreta uma referência de data e hora sem fuso em relação a um cronômetro local e abstrato dentro do sistema operacional em execução. Por exemplo, computadores portáteis podem ter relógios internos cujas configurações podem ou não corresponder ao fuso horário geográfico. Você pode interpretar a hora sem fuso substituindo o fuso horário da fonte de tempo abstrata atual em vez do fuso horário local.

Você deve considerar especialmente o significado do deslocamento UTC com as datas e horas nas consultas. Em geral, as comparações de equivalência, maior ou menor que funcionam entre duas datas e horas se as datas e horas usarem o mesmo deslocamento UTC. Ao lidar com datas e horas que ocorrem com diferentes deslocamentos de fuso horário, primeiro você deve converter as datas e horas em GMT.

Consultas que envolvem datas e horas relativas com asteriscos em um ou mais subcampos só são significativas para o WMI quando têm a equivalência comparada. Além disso, o WMI não permite o uso de asteriscos como curingas. Em vez disso, o WMI compara cada caractere de datas e horas relativas.

Os exemplos a seguir descrevem duas datas que uma consulta WMI não considera igual:

  • 19980401135809.000000+***
  • 19980401135809.000000+000

Convertendo em formato FILETIME ou VT_DATE

O formato DATETIME do CIM é usado somente no WMI. Você pode converter de e para o formato do WMI e o formato FILETIME ou VT_DATE chamando os métodos do objeto de script SWbemDateTime. Uma estrutura FILETIMEdatetime é um valor de 64 bits que os sistemas operacionais Windows de 32 bits usam. O formato VT_DATE é um valor datetime de variante de automação usado pelo Visual Basic e pelo ActiveX. A tabela a seguir lista os métodos de conversão.

Método Descrição
SWbemDateTime.GetFileTime Obtém um valor DATETIME no formato FILETIME.
SWbemDateTime.GetVarDate Obtém um valor DATETIME no formato VT_DATE.
SWbemDateTime.SetFileTime Define uma propriedade DATETIME usando uma data FILETIME como entrada.
SWbemDateTime.SetVarDate Define uma propriedade DATETIME usando uma data VT_DATE como entrada.

Formato de data e hora

Sobre o WMI

Tarefas do WMI: datas e horas

Formato de intervalo

SWbemObject.Put_

SWbemServicesEx.Put

SWbemDateTime

IWbemClassObject::Put

IWbemServices::PutClass