Problemas com Date - Horário de Verão - Linux

2 respostas
danilomunoz

Olá galera!

Desenvolvi um programa no qual ele lê um arquivo XML e faz um parse dele para uma classe minha.

Esta classe tem uma propriedade do tipo Date.
O XML lido é gerado por um outro programa.

programa 1 -> XML -> programa 2

No WIN XP está ocorrendo tudo corretamente, mas agora que estou colocando o programa no linux estou tendo problemas:

WIN XP:

programa 1 gera XML:
2007-02-12 09:31:42 BRT

programa 2 lê XML:
-> 2007-02-12 09:31:42

LINUX:

programa 1 gera XML:
2007-02-12 09:31:42 BRT

programa 2 lê XML:
-> 2007-02-12 [color=red]10[/color]:31:42

No linux está adiantando em uma hora a propriedade data, após o “parseamento”.

Estou usando o XStream.

Espero que entendam o problema e possam me ajudar.

Grato.

2 Respostas

mister_m

Danilo,

Em primeiro lugar, se puder, fuja correndo de Date e Calendar e use a API do Joda-Time. Ela vai solucionar não só esse problema, como eliminar outros problemas futuros com data e hora.

Se você realmente quiser insistir no uso de Date, você deve compreender que o software está certo ou errado nas duas pontas, dependendo de como você enxergue a questão. A data gerada não inclui timezone, logo não pode ser comparada com a data lida. Por esse prisma, a data gerada está sempre certa (porque em outro timezone é a mesma data) ou sempre errada por não incluir o timezone.

O que você precisa fazer é customizar a geração - talvez a leitura - da data com XStream de modo a incluir o timezone.

danilomunoz

Olá Michael,

Realmente eu não estava considerando o timezone. Então não tem como os programas terem “um ponto de referência”. Como eu desejo que o programa 2 trate a hora “puramente”, sem alterar o valor dela utilizei um Calendar com timezone 0. Sem adicionar ou subtrair horas.

Calendar c = new GregorianCalendar(TimeZone.getTimeZone("GMT+00"));

Obrigado pela dica.

Criado 12 de fevereiro de 2007
Ultima resposta 13 de fev. de 2007
Respostas 2
Participantes 2