Partilhar via


Tipo DATE

O tipo DATE é implementado com o uso de um número de ponto flutuante de 8 bytes. Os dias são representados por incrementos de números inteiros, iniciando em 30 de dezembro de 1899 e meia-noite como zero hora. Valores de hora são expressos como o valor absoluto da parte fracionária do número. A seguinte tabela ilustra várias datas junto com o equivalente numérico do tipo DATE:

Data e hora Representação
30 de dezembro de 1899, meia-noite 0,00
1º de janeiro de 1900, meia-noite 2,00
4 de janeiro de 1900, meia-noite 5.00
4 de janeiro de 1900, 6h 5.25
4 de janeiro de 1900, meio-dia 5.50
4 de janeiro de 1900, 21h 5,875

O tipo de data DATE, bem como a classe COleDateTime, representa datas e horas como uma linha numérica clássica. A classe COleDateTime contém vários métodos para manipular valores DATE, incluindo conversão de e para outros formatos de data comuns.

Os seguintes pontos devem ser observados ao trabalhar com esses formatos de data e hora no Automação:

  • As datas são especificadas na hora local. A sincronização deve ser executada manualmente ao trabalhar com datas em fusos horários diferentes.

  • Os tipos de data não englobam o Horário de Verão.

  • A linha do tempo de data torna-se descontinuada para valores de data inferiores a 0 (antes de 30 de dezembro de 1899). Isso ocorre porque a parte de número inteiro do valor de data é tratada como com sinal, enquanto a parte fracionária é tratada como sem sinal. Ou seja, a parte de número inteiro do valor de data pode ser positiva ou negativa, enquanto a parte fracionária do valor da data é sempre adicionada à data lógica geral. A seguinte tabela mostra alguns exemplos:

Data e hora Representação
27 de dezembro de 1899, meia-noite -3,00
28 de dezembro de 1899, meio-dia -2,50
28 de dezembro de 1899, meia-noite -2,00
29 de dezembro de 1899, meia-noite -1.00
30 de dezembro de 1899, 18h -0,75
30 de dezembro de 1899, meio-dia -0,50
30 de dezembro de 1899, 6h -0,25
30 de dezembro de 1899, meia-noite 0,00
30 de dezembro de 1899, 6h 0,25
30 de dezembro de 1899, meio-dia 0,50
30 de dezembro de 1899, 18h 0,75
31 de dezembro de 1899, meia-noite 1,00
1º de janeiro de 1900, meia-noite 2,00
1º de janeiro de 1900, meio-dia 2.50
2 de janeiro de 1900, meia-noite 3.00

Cuidado

Observe que, como 6h é sempre representado por um valor fracionário 0,25, independentemente de o inteiro que representa o dia ser positivo (após 30 de dezembro de 1899) ou negativo (antes de 30 de dezembro de 1899), uma simples comparação de ponto flutuante classificaria erroneamente qualquer DATE que representasse 6h em um dia anterior a 30/12/1899 como posterior a um DATE que representasse 7h no mesmo dia.

Mais informações sobre problemas relacionados a tipos DATE e COleDateTime podem ser encontradas em Classe COleDateTime e Data e hora: suporte ao Automação.

Confira também

Data e Hora
Classe COleDateTime