
Um colega me disse: “Já se passaram exatamente 43.871 dias desde 01.01.1900”. Hoje é 10.02.2020.
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
Então fiquei confuso porque havia uma diferença de 2 dias. Então perguntei ao Google ao todo-poderoso:
Como você pode ver, o Google também diz que 43.869 dias se passaram, e não 43.871.
Então perguntei ao meu amigo como ele calculou isso. Ele fez isso no Excel, formatando uma célula para dateonly
. Quando ele escreve um int
nele, o Excel irá convertê-lo 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 à frente de nós ou por que ele 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, pois tenho um Excel alemão):
Responder1
O porquê:
Em primeiro lugar, o seu amigo e o Google estão calculando de forma diferente. O Excel (usando o sistema Data 1900) acha que há apenas um dia a mais desde 1900.
O Excel armazena datas como números de série onde 1-Jan-1900
= 1
E 10-Feb-2020
->43871
Entãodias desdepelo Excel deve ser 43871
- 1
-->43870
No entanto, o cálculo do Excel está incorreto.
Quando o Excel foi lançado, 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 frente à concorrência, o Excel incluiu esse bug. Porém, por 29-Feb-1900
se tratar de uma data inexistente, outros métodos aparecerão, corretamente, 43869
ao subtrair as duas datas.
A propósito, o Excel VBA também calcula a diferença de data corretamente ->43869
Responder2
O Microsoft Excel oferece suporte a dois sistemas de datas diferentes. Esses sistemas são o sistema de datas de 1900 e o sistema de datas de 1904.
O sistema de datas de 1900
No sistema de data 1900, o primeiro dia suportado é 1º de janeiro de 1900. Quando você insere uma data, a data é 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 no número de série 35981. Por padrão, o Microsoft Excel para Windows usa o sistema de datas 1900. O sistema de data 1900 permite 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 data de 1904
No sistema de data de 1904, o primeiro dia suportado é 1º de janeiro de 1904. Quando você insere uma data, a data é 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 no número de série 34519. Devido ao design dos primeiros computadores Macintosh, datas anteriores a 1º de janeiro de 1904 não eram suportadas. Este projeto pretendia evitar problemas relacionados ao fato de 1900 não ter sido 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 usa como padrão o sistema de datas de 1900 e oferece suporte a datas a partir de 1º de janeiro de 1900.
A diferença entre os sistemas de datas
Como os dois sistemas de datas usam dias iniciais diferentes, a mesma data é representada por números de série diferentes em cada sistema de datas. Por exemplo, 5 de julho de 1998 pode ter dois números de série diferentes, como segue.
Date system Serial number of July 5, 1998
1900 date system 35981
1904 date system 34519
Fonte: https://docs.microsoft.com/en-us/office/troubleshoot/excel/1900-and-1904-date-system