Horário de Verão e Java

14 - Outubro - 2008

Ontem passei a tarde inteira tentando enteder o que se passava com o horário de verão que insistia em não funcionar, até que descobri que a JVM não está ajustada com o TimeZone para o horário de verão.

Só para esclarecer: A JVM possui seu próprio TimeZone para não depender únicamente do SO, e justamente o TimeZone para o Brasil e o horário de verão para 2008 não está correto.

Uma solução alternativa que encontrei é ajustar o TimeZone da JVM em runtime, como o exemplo que segue:

System.out.println("Antes:  " + new Date());

SimpleTimeZone stz = new SimpleTimeZone(-3 * 60 * 60 * 1000, "GMT-3:00");
stz.setStartRule(Calendar.OCTOBER, 3, Calendar.SUNDAY, 0);
stz.setEndRule(Calendar.FEBRUARY, 3, Calendar.SUNDAY, 0);
TimeZone.setDefault(stz);

System.out.println("Depois: " + new Date());