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)