Partilhar via


CIM_DATETIME

Você pode acessar todas as datas e horasCommon Information Model (CIM) no WMI usando um dos dois formatos de comprimento fixo específicos para WMI e CIM. Em scripts, 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.

Formato

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

Formato Descrição
DATETIME
aaaammddHHMMSS.mmmmmmsUUU
Formato no qual os valores deCIMDATETIME 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 em de Formato de Objeto Gerenciado (MOF) 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 apenas em consultas WQL (WMI Query Language).
aaaa-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 Consultando WMI ou Consultando 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-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.

Domínio Descrição
aaaa Ano de quatro dígitos (0000 a 9999). Sua implementação pode restringir o intervalo suportado. Por exemplo, uma implementação só pode abranger os anos de 1980 a 2099.
mm Mês de dois dígitos (01 a 12).
dd Dia de dois dígitos do mês (01 a 31). Este valor deve ser adequado 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). A sua implementação não tem de suportar a avaliação utilizando este campo. No entanto, este campo deve estar sempre presente para preservar a natureza de comprimento fixo da cadeia de caracteres.
mmm Número de milissegundos de três dígitos 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 indicando o número de minutos que o fuso horário de origem se desvia do UTC. Para WMI, é encorajado, mas não obrigatório, converter tempos para 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 desejar deixar um campo não especificado, deve 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 um datetime for usado para representar um ponto específico no tempo, todos os seus campos devem incluir dados. Se for utilizado 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 da medição for de um dia.

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

Configuração de UTC Offset 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 zona para um cronômetro local e abstrato dentro do sistema operacional em execução. Por exemplo, os 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 zona 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 do deslocamento UTC com datas e horas em consultas. Em geral, a equivalência, maior ou menor que as comparações 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 compensações 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 para 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 com base em 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 formatoCIMDATETIME é usado apenas no WMI. Você pode converter de e para o formato WMI e o formato FILETIME ou VT_DATE chamando os métodos do SWbemDateTime objeto de script. Uma estrutura FILETIMEdatetime é um valor de 64 bits que os sistemas operacionais Windows de 32 bits usam. VT_DATE formato é um valor datetime 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 de DATETIME no formatoFILETIME.
SWbemDateTime.GetVarDate Obtém um valor de DATETIME em VT_DATE formato.
SWbemDateTime.SetFileTime Define uma propriedade DATETIME usando um FILETIME date como entrada.
SWbemDateTime.SetVarDate Define uma propriedade DATETIME usando uma data VT_DATE como entrada.

Formato de data e hora

Sobre o WMI

Tarefas WMI: Datas e Horas

Formato de intervalo

SWbemObject.Put_

SWbemServicesEx.Put

SWbemDateTime

IWbemClassObject::P ut

IWbemServices::P utClass