Função SystemTimeToVariantTime (oleauto.h)

Converte uma hora do sistema em uma representação variante.

Sintaxe

INT SystemTimeToVariantTime(
  [in]  LPSYSTEMTIME lpSystemTime,
  [out] DOUBLE       *pvtime
);

Parâmetros

[in] lpSystemTime

A hora do sistema.

[out] pvtime

A hora da variante.

Retornar valor

A função retorna TRUE em caso de êxito e FALSE caso contrário.

Comentários

Uma hora variante é armazenada como um valor real de 8 bytes (duplo), representando uma data entre 1º de janeiro de 1900 e 31 de dezembro de 9999, inclusive. O valor 2.0 representa 1º de janeiro de 1900; 3.0 representa 2 de janeiro de 1900 e assim por diante. Adicionar 1 ao valor incrementa a data em um dia. A parte fracionária do valor representa a hora do dia. Portanto, 2,5 representa o meio-dia de 1º de janeiro de 1900; 3.25 representa 6:00 da manhã em 2 de janeiro de 1900 e assim por diante. Números negativos representam datas anteriores a 30 de dezembro de 1899.

O tempo de variante é resolvido para um segundo. Todos os milissegundos na data de entrada são ignorados.

Observação

Ao trabalhar com o tempo variante, esteja atento ao dia adicional adicionado em anos bissextos, o que pode produzir resultados inesperados se sem tratamento. Para obter mais informações, consulte preparação para o ano bissexto.

A estrutura SYSTEMTIME é útil pelos seguintes motivos:

  • Ele abrange todos os períodos de tempo/data. A data/hora do MS-DOS é limitada a representar apenas essas datas entre 1/1/1980 e 31/12/2107.
  • Os elementos de data/hora são facilmente acessíveis sem a necessidade de fazer nenhuma decodificação de bits.
  • As funções de formatação getDateFormat e GetTimeFormat do Suporte a Dados Nacionais recebem um valor LPSYSTEMTIME como entrada.
  • É o formato de dados de data/hora padrão compatível com o Windows.
A função SystemTimeToVariantTime aceitará datas inválidas e tentará corrigi-las ao resolver para uma hora VARIANT. Por exemplo, uma data inválida, como 29/02/2001, resolve para 1/3/2001. Somente os dias são fixos, portanto, os valores de mês inválidos resultam em um erro retornado. Os dias estão marcados para estar entre 1 e 31. Dias e dias negativos maiores que 31 resultam em um erro. Um dia menor que 31, mas maior que o dia máximo nesse mês tem o dia promovido para o dia apropriado do mês seguinte. Um dia igual a zero é resolvido como o último dia do mês anterior. Por exemplo, uma data inválida, como 0/2/2001, resolve a 31/1/2001.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho oleauto.h
Biblioteca OleAut32.lib
DLL OleAut32.dll