Um colega me disse: "Exatamente 43871 dias se passaram desde 01.01.1900". Hoje é 10.02.2020.
Eu queria verificar isso com o PowerShell, mas obtive outro resultado:
PS C:\Windows\system32> New-TimeSpan ([datetime]"01.01.1900") (Get-Date)
Days : 43869
Hours : 11
Minutes : 15
Seconds : 46
Milliseconds : 304
Fiquei confuso porque havia uma diferença de 2 dias. Então eu perguntei ao Google todo-poderoso:
Como você pode ver, o Google também diz que 43869 dias se passaram, não 43871.
Então perguntei ao meu amigo como ele calculava. Ele fez isso no Excel, formatando uma célula para dateonly
. Quando ele escreve um int
nele, o Excel o converte em uma data, por exemplo
15641
torna-se27.10.1942
19874
torna-se30.05.1954
43869
torna -se08.02.2020
(?)43871
torna -se10.02.2020
(?)
O Excel está 2 dias à nossa frente ou por que acha que houve 2 dias a mais do que realmente houve desde 01.01.1900? Está faltando alguma coisa?
Aqui está um pequeno gif (infelizmente em alemão, já que tenho um Excel em alemão):
O porquê:
Em primeiro lugar, seu amigo e o Google estão calculando de maneira diferente. O Excel (usando o sistema 1900 Date) considera apenas um dia a mais desde 1900.
O Excel armazena datas como números de série onde
1-Jan-1900
=1
E10-Feb-2020
-->43871
Portanto, os dias desde o Excel devem ser
43871
-1
->43870
No entanto, o cálculo do Excel está incorreto.
Quando o Excel foi introduzido, o Lotus123 era o principal programa de planilhas.
O Lotus 123 tinha um bug em que pensava que o ano de 1900 era um ano bissexto.
Para compatibilidade em vista da concorrência, o Excel incluiu esse bug. Porém, como
29-Feb-1900
é uma data inexistente, outros métodos irão mostrar, propriamente,43869
ao subtrair as duas datas.A propósito, o Excel VBA também calcula a diferença de data corretamente -->
43869
O Microsoft Excel oferece suporte a dois sistemas de data diferentes. Esses sistemas são o sistema de datas de 1900 e o sistema de datas de 1904.
O sistema de data de 1900
No sistema de datas de 1900, o primeiro dia aceito é 1º de janeiro de 1900. Quando você insere uma data, ela é convertida em um número de série que representa o número de dias decorridos começando com 1 para 1º de janeiro de 1900. Por exemplo , se você inserir 5 de julho de 1998, o Excel converterá a data para o número de série 35981. Por padrão, o Microsoft Excel para Windows usa o sistema de data 1900. O sistema de datas de 1900 permite uma melhor compatibilidade entre o Excel e outros programas de planilhas, como o Lotus 1-2-3, projetados para serem executados no MS-DOS ou no Microsoft Windows.
O sistema de datas de 1904
No sistema de datas de 1904, o primeiro dia aceito é 1º de janeiro de 1904. Quando você insere uma data, ela é convertida em um número de série que representa o número de dias decorridos desde 1º de janeiro de 1904, começando com 0 para janeiro 1, 1904. Por exemplo, se você inserir 5 de julho de 1998, o Excel converterá a data para o número de série 34519. Devido ao design dos primeiros computadores Macintosh, as datas anteriores a 1º de janeiro de 1904 não eram suportadas. Esse projeto visava evitar problemas relacionados ao fato de 1900 não ser um ano bissexto. No passado, o Excel para Macintosh usava como padrão o sistema de datas de 1904 para pastas de trabalho originadas em um Macintosh. No entanto, o Excel para Macintosh agora é padronizado para o sistema de datas de 1900 e suporta datas a partir de 1º de janeiro de 1900.
A diferença entre os sistemas de data
Como os dois sistemas de datas usam dias iniciais diferentes, a mesma data é representada por diferentes números de série em cada sistema de datas. Por exemplo, 5 de julho de 1998 pode ter dois números de série diferentes, como segue.
Fonte: https://docs.microsoft.com/en-us/office/troubleshoot/excel/1900-and-1904-date-system