Esta pergunta é baseada nas observações de AdamV em sua resposta em Como faço para obter o nome do dia em uma célula no Excel?
Quando A1 tiver o valor 01/08/2009, então:
=WEEKDAY(A1)
obterá7
=TEXT(7, "dddd")
obteráSaturday
=TEXT(7,"dddd, yyyy-mm-dd")
obteráSaturday, 1900-01-07
=TEXT(1,"dddd, yyyy-mm-dd")
obteráSunday, 1900-01-01
=TEXT("1900-01-01","dddd, yyyy-mm-dd")
também obteráSunday, 1900-01-01
Os dois últimos estão errados: o 1º de janeiro de 1900 é na verdade uma segunda-feira.
Várias fontes parecem confirmar que:
- Janeiro de 1900 - Wikipedia, a enciclopédia livre.
- Calendário do ano 1900 - Países Baixos.
- Calendário do ano 1900 - Estados Unidos.
o que estou perdendo? Por que o Excel está fazendo isso errado?
microsoft-excel
date
Jeroen Wiert Pluimers
fonte
fonte
Respostas:
Conforme descrito no Microsoft KB 214058 :
Os "outros programas de planilhas" se referem ao Lotus 1-2-3 , que era bastante popular na época, e supunha incorretamente que o ano de 1900 era um ano bissexto. Isso é explicado com ainda mais detalhes no KB 214326 :
fonte
Aqui está o motivo explicado pelo próprio Joel: My First BillG Review
fonte
Uma solução para isso é adicionar 400 anos ao ano, calcular o dia da semana como na seguinte fórmula = WEEKDAY (DATA (A4 + 400, B4, C4), 1), portanto, se A4 = 1834 B4 = 12 C4 = 14 isso retornaria 1 (domingo), igual a 14 de dezembro de 2234. Isso deixa de funcionar para datas anteriores a 1753, no ano seguinte à mudança no calendário gregoriano
fonte