Horario de verao e historico

5 respostas
G

Estou com um problema de horario de verao. Já fiz a busca no GUJ e pelo que vi os posts comentam apenas sobre como ajustar o as datas do horario de verao corrente (inicio e fim do horario de verão). O meu problema é que a aplicação salva no banco as datas como long (TimeMillis) e portanto uma data que poderia ser horario de verao em 2005, pode não ser horario de verao com as datas limite corrente.

Alguém sabe se tem como fazer para o java verificar o histórico das datas limites e quando instanciar a data instanciá-la com o gmt correto, ou vou ter que fazer gambi pra corrigir na mão?

Vlwz.

5 Respostas

mister_m

A pergunta é: você precisa realmente de suporte a timezones? Precisa realmente de datas ou apenas instantes resolveriam o seu problema? Independentemente das respostas, o Joda-Time será uma alternativa melhor para você.

T

O Java tem um histórico de horários de verão - só que é necessário que você atualize seu arquivo jre\lib\zi\America\Sao_Paulo (por exemplo) com o mais atual, para que você possa ver os valores antigos. Vou dar um exemplo:

Digamos que você tenha salvado um valor que era 10 de outubro de 2004, onde o Java 1.4 achava que era horário de verão mas efetivamente não foi (porque houve visita do Papa ou coisa parecida, atrasaram a entrada em vigor do horário de verão), e você mesmo assim deixou o relógio da máquina correto de acordo com GMT (talvez você estivesse usando SNTP para atualizar o relógio de acordo com cais.rnp.br ou outro relógio atômico). Seu programa salvou corretamente o valor TimeMillis (OK), e em uma atualização posterior do Java (1.4.2_14, de 2007) a Sun já ficou sabendo que naquela época o horário de verão entrou mais tarde em vigor.

Se você, para mostrar as datas e horas, atualizar o arquivo jre\lib\zi\America\SuaCidade corretamente, deve ter as informações corretas de horário de verão.

T

Para atualizar o diretório com as informações de horário de verão, rode a ferramenta tzupdater, que pode ser encontrada no próprio site da Sun. (Em uma instalação típica do JDK, você tem de rodar a ferramenta 2 vezes: uma para atualizar a instalação da JRE que fica em “C:\Arquivos de Programas\Java<sua versão da jre>”, e outra que para a instalação da JRE que fica dentro do diretório do JDK. )

G

Vlwz pelas respostas rápidas.

Vou tentar e posto os resultados.

G

mister_m

Até dei uma olhada no Joda Time, mas como preciso disso pra aplicações que já estão em produção a alguns anos, queriar tentar um método não invasivo prmeiro … :smiley: … mas vlwz, Pelo que vi o Joda Time é bem loko.

Criado 29 de janeiro de 2008
Ultima resposta 30 de jan. de 2008
Respostas 5
Participantes 3