Dúvida com GregorianCalendar

Olá pessoal…

Esse código abaixo sempre funcionou certinho em um sisteminha, mas no sistema q to desenvolvento agora, ele simplesmente tah pegando a data e a hora do sistema, porém a hora vem uma hora adiantada, os minutos, segundos e milesimos e a data estão certinho, somente a hora que vem uma hora adiantada. O código é o abaixo:

GregorianCalendar dtI = new GregorianCalendar(TimeZone.getTimeZone("GMT-3"),new Locale("pt_BR"));        
Timestamp dtIni = new Timestamp(dtI.getTimeInMillis());
System.out.println(dtIni);        

dai eu fiz uma gambiarra pra resolver, onde crio um objeto Date, pego o retorno do método getTime, que é do tipo Date, altero a hora e seto ela denovo no objeto GregorianCalendar (dtI), funciona, mas ficou ridiculo, kkk, sem contar que a API Date está deprecated… segue abaixo:

GregorianCalendar dtI = new GregorianCalendar(TimeZone.getTimeZone("GMT-3"),new Locale("pt_BR"));        
Date data = dtI.getTime();
data.setHours(data.getHours() - 1);
dtI.setTime(data);
Timestamp dtIni = new Timestamp(dtI.getTimeInMillis());
System.out.println(dtIni);        

gostaria de saber a opinião de vcs sobre qual poderia ser o meu erro e como resolver esse probleminha!!

Desde já grato !!!
t+

Isso cheira a problema do horário de verão. Infelizmente o da VM não é o mesmo do Windows…

a JVM 1.4 tinha um bug no horario de verao se nao me engano…

voce quer obrigar o sistema a sempre pegar a hora do brasil? pois senao tu pode usar: Calendar.getInstance();

t+

fiz um teste com o teu codigo, retornou GMT-3 ao inves de GMT-2 (estamos em horario de verao) no linux…

bem, to cansado agora pra pensar, mas sabado teus problemas vao se resolver :slight_smile: