Caros,
tenho um código +ou- assim:
java.util.Date d = new java.util.Date();
java.sql.Timestamp t = new java.sql.Timestamp(d.getTime());
pagamento.setDate(t);
O meu atributo t é persistido no banco em uma aplicação, depois é tranferido remotamente (EJB) para
outra aplicação, onde ele é persistido novamente. Nesse caminho, eu não realizo nenhuma mudança nele,
mas por incrivel que pareça, em um banco a data fica com um horário, e no outro com um horário(as vezes dia)
diferente. (Detalhe: Eu só dou um setTimestamp no PrepareStatement)
Estou desconfiando que o problema é porque essas máquinas estão com GMT diferentes. Ambas tem a mesma data,
só que o GMT delas é diferente(sei lah pq é assim, mas tah assim).
Eu fiz alguns testes rápidos aqui com um programinha main() e se eu mudo o meu GMT, mesmo sem alterar a data/hora
do sistema, ele imprime uma data diferente quando eu mando imprimir o Timestamp no console.
Ou seja:
Deixo o horário como 19:52, mas mudo o GMT para -10:00. Dai ele imprime uma hora diferente, 10:52.
Se volto o HMT para -3:00, imprime 19:52.
To meio perdido com isso tudo:
-Mesmo que os GMTs das máquinas estejam diferentes, o objeto Timestamp não é alterado. Só pelo GMT ser
diferente a data jah vai ser mudada? Como isso? E ainda sem mudar o objeto?
Alguem tem uma explicação pra isso? Da onde a JVM pega o horário? Ele não olha a hora do SO, mas olha
o GMT do SO?
Enfim, uma confusão! Se alguem puder me esclarecer, ficarei grato!
Obrigado!!!