Caro Lu�s,
Eu j� tive esse problema uma vez, foi um p� at� descobrir o que era. Sete o TimeZone
do teu objeto Calendar explicitamente, n�o deixe no TimeZone default, porque da�
acontece coisas do tipo que voc� teve a� embaixo: voc� l� a data, o Calendar cont�m a
data certa em um fuso hor�rio, mas na hora de dar um System.out.println(), sai em
outro fuso hor�rio.
Outra coisa, olhando na documenta��o agora, acabei de notar que o m�todo
java.util.Date.toLocaleString() est� deprecated. Use um java.text.DateFormat, que j�
utiliza TimeZone.
Infelizmente eu n�o tenho o c�digo fonte aqui comigo para te mandar, foi no outro
emprego em que eu estava. Vou tentar refazer agora, mas posso cometer algum engano.
// PEDA�O 1
//
// For�a a setagem do TimeZone default da JVM
// no in�cio do programa (applet ou application)
//
TimeZone tz_def = TimeZone.getTimeZone( "GMT-03:00" );
TimeZone.setDefault( tz_def );
......................................................
Depois, toda vez que se cria um objeto Calendar ou um DateFormat, force a setagem do
TimeZone para o TimeZone default do sistema. Voc� vai dizer: "p�, mas se � o default
do sistema, n�o � esse que ele usa quando eu n�o falo nada?". Eu acho que deveria, mas
dependendo da JVM onde voc� roda, isso nem sempre � verdade. No meu caso, o programa
que eu fiz rodava tanto como applet ou application (n�o era muito complexo n�o), e
isso que eu t� dizendo foi testado nas JVMs: Explorer 4, Explorer 5, Netscape 4.??
Win, Netscape 4.?? Linux, JDK Sun p/ Linux, JDK Sun p/ Windows. Cara, antes do truque
do TimeZone, em cada um sai uma coisa completamente diferente do que sai no outro.
EX.1
...
Calendar c = Calendar.getInstance();
c.setTimeZone( TimeZone.getDefault() ); // <---- AQUI!! O getDefault vai retornar
// o TimeZone que voc� setou no
// in�cio.
...
EX.2
...
DateFormat df = DateFormat.getDateInstance();
df.setTimeZone( TimeZone.getDefault() ); // For�a a setagem
...
> -----Original Message-----
> From: Lu�s Fernando Chaim [mailto:[EMAIL PROTECTED]]
> Sent: Ter�a-feira, 24 de Outubro de 2000 16:45
> To: [EMAIL PROTECTED]
> Subject: [java-list] Problemas com Data
>
>
> Ol� a todos,
>
> estou com um problema em cria��o de uma data para grava��o em banco de
> dados.
>
> O c�digo usado � o seguinte:
>
> import java.util.*;
> import java.text.*;
> import java.rmi.RemoteException;
>
> public
> class Principal{
>
> public static void main(String[] args)
> throws RemoteException{
>
> Calendar calendar = null;
> Date date = null;
> try{
> date = DateFormat.getDateInstance(3).parse("01/10/2000");
> calendar = Calendar.getInstance();
> calendar.setTime(date);
> }
> catch(ParseException parseexception){}
>
> java.sql.Date sqlDate = new java.sql.Date(
> calendar.getTime().getTime() );
> System.out.println("Data: "+ sqlDate.toLocaleString() );
> System.out.println("---- Fim ----");
> }
> }
>
> No System.out.println("Data: "+ sqlDate.toLocaleString() ), o resultado
> esperado � o seguinte:
>
> Data: 01/10/2000 00:00:00
>
> mas est� retornando o seguinte:
>
> Data: 30/09/2000 23:00:00
>
> Algu�m pode me ajudar ?
>
> T++
>
> Lu�s Fernando
> Analista de Sistemas
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
> d�vidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>