CIM_DATETIME

Você pode acessar todas as datas e horas do Common Information Model (CIM) no WMI usando um dos dois formatos de comprimento fixo específicos para WMI e 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 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 CIM DATETIME são armazenados. Esse formato é independente da localidade para que você possa escrever um script que seja executado em qualquer máquina. 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 Modificando 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, consulte Consulta WMI ou Consulta com WQL. Esse formato não é independente da localidade. A ordem do ano, mês e dia depende da configuração de formato regional e de idioma da sessão do usuário. Por exemplo, enquanto o padrão para o inglês dos Estados Unidos é "mm-dd-yyyy hh:mm:ss:mmm", o formato para a maioria dos outros países ou regiões é "yyyy-mm-dd hh:mm:ss:mmm".

A tabela a seguir lista os campos nos formatos.

Campo Descrição
yyyy Ano de quatro dígitos (0000 a 9999). Sua implementação pode restringir o intervalo com suporte. Por exemplo, uma implementação pode suportar apenas os anos de 1980 a 2099.
mm Mês com dois dígitos (01 a 12).
dd Dia com dois dígitos do mês (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 há dados válidos.
HH Hora de dois dígitos do dia 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 segundos de dois dígitos 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 de milissegundos no minuto (000 a 999).
s Sinal de mais (+) ou sinal de menos (-) para indicar um deslocamento positivo ou negativo do Tempo Universal Coordenado (UTC).
UUU Deslocamento de três dígitos que indica o número de minutos que o fuso horário de origem se desvia do UTC. Para o WMI, é incentivado, mas não obrigatório, converter horários em GMT (um deslocamento UTC de 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 podem 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+*** (Legal)
  • 1998-04-16 ******:*** (Ilegal)
  • 199*0416******.000000+*** (Ilegal)
  • 199*-04-16 ******:*** (Ilegal)

Se uma data e hora for usada 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, apenas os campos necessários para transmitir a duração devem incluir dados.

O exemplo a seguir descreve "primeiro de abril": uma data relativa a algum ano não especificado, mas ainda um ponto definido se o nível de detalhe de medição for um dia.

  • ****0401******.000000+***
  • ****-04-01 ******:*** (Ilegal)

Configurando o deslocamento UTC e GMT

Os exemplos a seguir descrevem como você pode definir uma hora 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:*** (Ilegal)

Um aplicativo interpreta uma referência de data e hora sem zonas para 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 o tempo não zoneado substituindo o fuso horário da fonte de tempo abstrata atual em vez do fuso horário local.

Você deve dar atenção especial ao significado da diferença UTC com datas e horas em 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 a mesma diferença UTC. Ao lidar com datas e horas que ocorrem com diferentes deslocamentos de fuso horário, você deve primeiro converter as datas e horas para GMT.

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

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

  • 19980401135809.000000+***
  • 19980401135809.000000+000

Convertendo para o formato FILETIME ou VT_DATE

O formato CIM DATETIME é usado somente no WMI. Você pode converter de e para o formato WMI e o formato FILETIME ou VT_DATE chamando os métodos do objeto de script SWbemDateTime. Uma estrutura datetime FILETIME é um valor de 64 bits que os sistemas operacionais Windows de 32 bits usam. VT_DATE formato é um valor de data e hora de variante de automação usado pelo Visual Basic e 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 Data e Hora

Sobre o WMI

Tarefas WMI: datas e horas

Formato de intervalo

SWbemObject.Put_

SWbemServicesEx.Put

SWbemDateTime

IWbemClassObject::Put

IWbemServices::PutClass