Por que o Excel obtém um resultado diferente do PowerShell e do Google ao tentar descobrir quantos dias se passaram desde 01/01/1900?

Por que o Excel obtém um resultado diferente do PowerShell e do Google ao tentar descobrir quantos dias se passaram desde 01/01/1900?

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:

GoogleDaysPassedSearch

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 intnele, o Excel irá convertê-lo em uma data, por exemplo

  • 15641torna-se27.10.1942
  • 19874torna-se30.05.1954
  • 43869torna-se 08.02.2020(?)
  • 43871torna-se 10.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):

ExcelCálculoGif

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-1900se tratar de uma data inexistente, outros métodos aparecerão, corretamente, 43869ao 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

informação relacionada