Problemas com o horário de verão.

A dica de hoje foi enviada pelo Benício Silva Gontijo, Mestrando em Ciência da Computação pela UFMG, e mostra como resolver um problema referente ao horário de verão.
Benício, em nome da comunidade Java agradeço a sua contribuição!

=======================================================================
Estou lhe escrevendo para dar uma dica que talvez possa ser interessante. Eu me deparei com problema que a princípio parecia ser trivial, mas quando eu fui ver era um pouco mais complicado.

O problema foi que para o produto desenvolvido na firma onde trabalho [Synergia - DCC - UFMG ] escrevi um arquivo de log onde a hora de cada ação tem que ser registrada. Entrando após o dia 06/10 foi notado que mesmo estando a hora da máquina correta no log sempre aparecia uma hora a mais, ou seja, era como se estivéssemos no horário de verão.

Pesquisando no site da Sun verificamos esse problema já era conhecido
(http://forum.java.sun.com/thread.jsp?forum=31&thread=248764) e que para
solucioná-lo tínhamos que utilizar a classe SimpleTimeZone onde temos a
oportunidade de criar uma "TIME ZONE" e configurá-la para o horário de verão da maneira desejada.

A seguir segue um exemplo simples de como lidar com esse problema.

import java.util.*

public class TesteHorarioVerao
{
public static void main(String[] args){
// Cria uma TIME ZONE correspondente ao horário de Brasília
SimpleTimeZone pdt = new
SimpleTimeZone(-3 * 60 * 60 * 1000,"GMT-3:00");

// Seta as regras para o horário de verão Brasileiro
// Começando no primeiro domingo após o dia primeiro
pdt.setStartRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY,0);

// Terminando no último domingo do mês de Fevereiro
pdt.setEndRule(Calendar.FEBRUARY, -1, Calendar.SUNDAY,0);

// Instanciando um GregorianCalendar com com a time zone de BSB
// e levando em consideração as regras do horário de verão.
Calendar dataHoje = new GregorianCalendar(pdt);

System.out.println(dataHoje.get(Calendar.HOUR_OF_DAY) + ":" +
dataHoje.get(Calendar.MINUTE) + ":" +
dataHoje.get(Calendar.SECOND);
}
}

Além dos métodos mostrados existem outros métodos interessantes.

Benício Silva Gontijo
Equipe de Implementação - Sala 3015
Synergia - DCC - UFMG

Mestrando em Ciência da Computação
Departamento de Ciência da Computação
Universidade Federal de Minas Gerais




================================================================================
[dicas-list] circula diariamente com pequenas dicas sobre a plataforma Java e é
mais um serviço da Sociedade de Usuários Java - http://www.soujava.org.br
*** SouJava - Fortalecendo a Comunidade Java Brasileira! ***
- Para contribuir com uma dica, envie um e-mail para [EMAIL PROTECTED]
- Participe de outras listas de discussão sobre a linguagem Java.
Saiba mais em http://www.soujava.org.br/lista.htm
--------------------------------------------------------------------------------
- Para assinar este boletim: mailto:dicas-list-subscribe@;soujava.org.br
- Para cancelar sua assinatura: mailto:dicas-list-unsubscribe@;soujava.org.br
- Dicas anteriores: http://www.mail-archive.com/dicas-list%40soujava.org.br
- Para discutir sobre as dicas, acesse o Mundo OO (http://www.mundooo.com.br)


Responder a