[PROBLEMA] Problemas com o Horario de verão

3 respostas
S

Pessoal,

No último sábado com a entrada em vigor do horário de verão deu um erro aqui no sistema que eu ainda não consegui resolver (não é grave mas tenho menos de 1 ano para resolvê-lo).

O sistema trabalha com duas datas: 1 data com horário de verão e 1 data sem horário de verão.

Sendo assim, no período fora do horário de verão, os seus valores caminham juntos como mostrado abaixo:

Data sem Horário de Verão Data com Horário de Verão
13:00h 13:00h
14:00h 14:00h
15:00h 15:00h
16:00h 16:00h
e assim continua e assim continua

Já no período do horário de verão, os valores contém uma diferença de uma hora entre eles como mostrado abaixo:

Data sem Horário de Verão Data com Horário de Verão
13:00h 14:00h
14:00h 15:00h
15:00h 16:00h
16:00h 17:00h

e assim continua e assim continua

Porém, na hora que o horário de verão entra em vigor o que ocorre é:

Data sem Horário de Verão Data com Horário de Verão
22:00h 22:00h
23:00h 23:00h
23:00h 01:00h
1:00h 02:00h
e assim continua e assim continua

Ou seja, ao subtrair 1 hora da data com horário de verão, ao invés do Java me retornar uma data entre 00:00h e 01:00h ele me retorna uma data entre 23:00h e 00:00h pois pelo que entendi o java não consegue representar as datas nesse período pois elas não existem na verdade.

Preciso saber se algum de vocês sabe como representar uma data nesse intervalo no Java (já tentei subtrair as datas, forçar um valor, mudar a TimeZone, etc. mas até agora nada funcionou a contento).

Pois preciso associar esse valor a um campo Date para que ele possa ser armazenado na base de dados.

Conto com a ajuda de vc6

3 Respostas

S

Ninguem?

E

Um truque que eu costumo usar é o seguinte:

a) Datas em uma base SQL que não usam horários devem usar java.sql.Date
b) Se precisar de algum horário, forçar artificialmente o horário “01:00:00” que sempre vai existir, com ou sem horário de verão).

Arkimedes

Cara,

tenho um problema parecido também. Tenho somente as datas em um banco de dados. Porém quando é feita a pesquisa é considerada a hora também, pegando

assim sempre a hora 00:00:00. Porém no dia de troca para o horário de verão não existe a hora 00, mas no banco foi gravado somente a data.
Justamente no primeiro dia de horário de verão (16/10/2011) a gente tem problemas com isso. A mudança no time zone resolveria, mas não podemos fazer isso pois pode
prejudicar outras as transações em paralelo.
Também não consigo forçar a data com hora 00.
A gente usa um framework de persistencia que foi desenvolvido internamente. E ele trabalha com long (milisegundos) para as datas, sendo assim considerando as horas.

Alguém tem alguma ideia?

Grato!!

Criado 19 de outubro de 2011
Ultima resposta 17 de nov. de 2011
Respostas 3
Participantes 3