Java.util.date() - 1

Estou fazendo isso no meu codigo:

dataatual = new java.util.Date();

Contudo, ao inves de aparecer a data IGUAL a do relogio do Windows (ou do Linux, testei em 2 micros), sai a data - 1 hora.

Ex. ao inves de aparecer 02/12/2004 11:45:00
aparece 02/12/2004 10:45:00

Ja chequei a data do sistema operacional e esta normal.
O que mais poderia checar para ver porque desta loucura?

Estou usando JDK 1.4.2 no Windows e JDK 1.5.0 no Linux, em uma aplicacao desktop Swing.

Kra, testei aki na minha máquina e tá funcionando normalmente.
Fiz uns teste aki e notei que quando a opção do relógio, Ajustar automáticamente relógio para o horário de verão, está marcado realmente ele exibe a data com uma hora a menos.

Tenta desmarcar essa opção e ajustar o relógio para a hora correta.

Duplo clique no relógio > Fuso Horário > Ajustar automáticamente relógio para o horário de verão

ou

Iniciar > Configuraçòes > Painel de Controle > Data e Hora > Fuso Horário > Ajustar automáticamente relógio para o horário de verão

Tomara que seja isso… :shock:

Uma braço… :wink:

Ps: Não testei no linux, não sei se ele tbm tem essa opção…

Esse problema deve estar relacionado a região configurada no seu sistema ou o horário de verão.

A classe GregorianCalendar ou a Calendar permite configurar um TimeZone para a sua região. Enfim, vc pode trabalhar com qualquer dessas duas classes, ao invés de Date, e configurar o seu TimeZone que deseja utilizar. Fica assim:

Utilizando GregorianCalendar

GregorianCalendar gc = new GregorianCalendar( TimeZone.getDefault() );//pega o TimeZone configurado no SO System.out.println( gc.getTime().toString() );

Utilizando Calendar

Calendar c = Calendar.getInstance( TimeZone.getDefault() );//pega o TimeZone configurado no SO System.out.println( c.getTime().toString() );

Você tb pode, ao invés de TimeZone.getDefault(), utilizar new TimeZone( “GMT-3” )

obs.: Esse valor é comparado com o horário de greenwich, onde para o meu caso, a diferença é 3 horas e para o seu caso é 4 horas. Portanto ficaria dessa forma:

Utilizando GregorianCalendar

GregorianCalendar gc = new GregorianCalendar( new TimeZone( "GMT-4" ) ); System.out.println( gc.getTime().toString() );

Para maiores detalhes dê uma olhada nas classes GregorianCalendar, Calendar e TimeZone.

Documentação Java

Caramba, nao é que o problema é mesmo do Horario de Verao!!!
Eu tirei isso e funcionou.
Obrigado a todos!!!

Opa!
Estou com este mesmo problema…
No entanto eu não posso privar o usuário de utilizar a opção “Horário de verão ativada”… Então quero saber como faço pra pegar o horário que aparece no relógio da bandeja…
Alguem sabe alguma forma para fazer isso?
Porque ainda que eu diminua um… ou some um… tem lugares q o fuso horario é maior… Tem lugares que não tem horario de verão e tem lugares que a opção de verão estará desativada…

Se alguem puder me dar uma ajudinha :slight_smile: