Anos bissextos e bugs de Excel

Imagem

Como a definição de anos bissextos pode afetar uma planilha eletrônica?

Se você copiar uma planilha com datas em excel e colar no Mac, vai ver que as datas estarão erradas. As datas terão 4 anos e 1 um dia a mais do que na planilha original.

Por que isto ocorre?
A planilha eletrônica para Mac surgiu antes do Excel, pelos meados dos anos 80. Eles fixaram a data de 01/01/1904 como data base para cálculos.

O excel surgiu anos depois, e tomou a data de 01/01/1900 como data base para cálculos.
Portanto, não dá para fazer cálculos de datas antes desta data nas planilhas eletrônicas.

 

Mas por que esta diferença de 1900 x 1904?
A razão é que o cálculo de datas não é um assunto muito fácil.

A primeira regra é a que todo mundo conhece: acrescente um dia a mais em fevereiro (o dia 29), a cada 4 anos, gerando o famoso ano bissexto.
Mas tem uma segunda regra que se sobrepõe à primeira: quando o ano termina em 00 (por exemplo 1700, 1800, etc), ou seja, a cada 100 anos, este ano só é bissexto se for múltiplo de 400. Por exemplo: 1700, 1800 e 1900 não são bissextos, mas 2000 é. 2100, 2200 e 2300 não são bissextos. Mas 2400 não é bissexto.

Portanto, curiosamente 1900 é uma exceção à regra do bissexto a cada 4 anos. E não valia a pena tratar esta exceção nos computadores dos anos 80, que tinham pouca capacidade de memória, processamento, e mais importante, nem se sabia se planilhas iriam ser bem sucedidas ou não.

O Excel, que veio depois (ou seja, num cenário com mais capacidade computacional e mais certeza de que seria um sucesso comercial) conseguiu incorporar a regra mais complexa do ano 1900. Daí esta diferença, que remete à essência da arquitetura básica dos softwares. E também é por isso que o Excel não consegue reconhecer e corrigir automaticamente o sistema de datas de 1900 para 1904, porque esta é uma hipótese da própria construção do sistema.

Conclusão hipotética: talvez as planilha do Mac tenham problema no ano de 2100, quando deveria ser bissexto pela regra dos 4 anos, mas nao é pela regra dos 400 anos. Seria o “bug do século bissexto”, algo assim. Mas, provavelmente, em 2100 não vai ter nem Mac nem Pc e isto tudo vai ser só história…

Agora, por que esta regra maluca de não ter anos bissextos em 3 de 4 séculos?
A unidade de tempo “dia” refere-se a uma volta da Terra em torno de si mesma. A unidade de tempo “ano” refere-se a uma volta da Terra ao redor do Sol. E um ano é igual a 365,24… dias. O ano não é um múltiplo inteiro nem fracionário do dia.
Se um ano fosse exatamente 365,25 dias, a regra simples de 1 dia a mais a cada 4 anos resolveria tudo. Porque 3 anos teriam 365 dias, sobrando 3*0,25 dia = 0,75 dia, e fechando a conta no 4 ano, com 1 dia a mais (366 dias no ano) para anular o 4*0.25 dia que estariam faltando.
Mas na verdade não é bem assim. A natureza não liga nem um pouco para a convenção dos homens, para facilitar a conta. Um ano não é fracionário, e equivale a um pouco menos de 365,25 dias. Portanto colocar o ano bissexto corrige demais, é um erro que vai se acumulando. Para corrigir isso, existe a segunda regra de não ter anos bissextos nos anos terminados em 00 exceto os múltiplos de 400.

Para piorar, a história não acaba aí. Como o ano não é inteiro e nem fracionário do dia, daqui a alguns milênios nem essa segunda regra vai funcionar, o que pode fazer com que o calendário e as estações do ano dentro do calendário fiquem errados. Então, vai chegar uma hora que vão ter que parar tudo e refazer o calendário inteiro (como aconteceu com a elaboração do calendário Gregoriano).
Além disso, nada garante que outras alterações menores possam mudar o tempo que a Terra gire ao redor do Sol, tornando esta equação mais incerta ainda.

Mas a única coisa certa é que daqui a alguns milênios a internet e os computadores, se existirem, serão muito diferentes do que são hoje. E ninguém vai ler esta mensagem. Então, vou imprimir o texto, colocar numa garrafa e enterrar bem fundo, para que as gerações futuras saibam sobre o bug do Mac x Excel e que o calendário erra não porque a gente não sabe fazer conta, mas porque é impossível mesmo expressar um numero irracional por um número fracionário.

 

 

 

Arnaldo Gunzi

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s