terça-feira, 6 de julho de 2010

Cuidado com o dia 17/10/2010


Este é um blog de propósitos gerais. E, pela primeira vez, vou tratar de um assunto técnico. Quando eu digo técnico eu quero dizer, relacionado ao meu trabalho. Por não caber em um tweet estou recorrendo ao blog para relatar o caso mais bizarro que eu já passei ao desenvolver aplicativos web.

javascript:alert(new Date("2010/10/17"))

Este link faz aparecer uma mensagem de alerta. A mensagem deveria conter a data "domingo, 17 de outubro de 2010".

Uns verão essa data, outros verão "sábado, 16 de outubro de 2010".

O que tem essa data de especial? A resposta é: mudança para o horário de verão. E aí, se você usa Windows e ele está configurado para atualizar automaticamente o fuso horário quando começar o horário de verão, isso irá fazer com que qualquer browser (testado no Internet Explorer, Firefox e Chrome) mostrem o dia errado.

E daí? E daí que muita coisa é feita supondo que uma data criada no javascript estará apontando pro dia certo e nesse caso não estará!!

Por exmplo, visite http://www.eyecon.ro/datepicker/ e tente (no Windows e com o ajuste automático de DST) selecionar o fatídico dia 17 de outubro.

Isso é um plugin do jQuery. Eu diria que existem pelo menos 50 aplicações rodando em algum lugar na internet que dependem dele.

Enfim, não há muito o que fazer. Na verdade há, sempre há. Só tem que instanciar o objeto Date setando a hora para 1 ao invés de deixar o default de 0.

javascript:alert(new Date(2010, 10, 17, 1))

Beleza, isso conserta o problema do horário de verão. Mas só porque agora a data vem como 1 hora da manhã ao invés de 0 hora, vários outros problemas são criados, porque ninguém imaginou que alguém passaria uma data com hora diferente de 0.

Ou seja...