≡ Menu

COMO AJUSTAR O HORARIO DE VERAO NO JAVA TIMEZONE

img

A JVM do Java possui um timezone próprio – java timezone – diferente do timezone do sistema operacional. Assim, o horário de verão brasileiro pode ser um problema para as aplicações em Java. Pode acontecer que o S.O. entenda que já é horário de verão e o Java não, dessa forma o computador terá um horário enquanto a aplicação Java estará em outro.

ENTENDA O PORQUÊ:

Isso ocorre pois o horário de verão brasileiro até 2007 era definido por decreto. Somente em 2008  foram criadas regras claras para seu inicio e fim – inicia sempre no terceiro domingo de outubro e termina no também terceiro domingo de Fevereiro, se coincidir com o Carnaval, prorroga-se por mais uma semana. Alem disso, apenas algumas regiões do Brasil é que possuem essa regra – sul, sudeste, centro-oeste e em 2011 teve a inclusão do estado da Bahia (nordeste).

POSSÍVEIS CAUSAS:

  1. Nas opções do relógio no S.O., o fuso horário não esta marcado como UTC-3 (Brasília).
  2. Na opções regionais e idiomas não esta configurado que o PC encontra-se no Brasil.
  3. O Java timezone esta desatualizado. (mais comum).

No primeiro e no segundo caso não teremos problemas em si com o horário de verão, porem, as aplicações Java poderão retornar um horário errado.

O terceiro caso é o mais comum, pode ser que esteja a rodar uma versão do Java de 2007, assim, o Java timezone não saberá, que, por exemplo, em 2011 o horário de verão iniciou-se dia 16 de Outubro. Para resolver esse problema basta fazer o download do Java – é recomendável a desinstalação completa da versão antiga.

CONFIGURANDO O JAVA TIMEZONE:

Pode existir casos onde queira que sua aplicação Java rode com um timezone diferenciado, por exemplo, um servidor em Manaus executando uma aplicação Java para usuários localizados em São Paulo, ou casos, onde mesmo corrigindo os três casos supracitados, o S.O. por algum motivo “desconhecido”, continua retornando um timezone “errado”. Então, para setar o timezone, basta adicionar o seguinte comando na linha de execução da aplicação:

java -Duser.timezone=America/Sao_Paulo -jar aplicacao.jar.

Se preferir, o UTC pode também ser configurado manualmente:

java -Duser.timezone=GMT-2 -jar aplicacao.jar.

Nesse exemplo, foi usando o GMT-2 simulando um horário de verão, na qual a regra é adicionar uma hora a mais no dia, como o fuso horário padrão de Brasília é -3, fica assim: três horas negativas mais uma hora positiva, igual a menos duas horas. Em outras palavras, quando o Brasil estiver no horário de verão, será GMT-2.

Para alterar as opções regionais da JVM, use os comandos a seguir:

java -Duser.language=pt -Duser.country=BR -jar aplicacao.jar

Até a próxima.

NEWSLETTER

Receba por e-mail nossos últimos posts.

{ 0 comments… add one }

Leave a Comment