Pessoal,
Estou com um problema ao tratar datas no meu sistema onde eu devo ir adicionando alguns meses à uma data e persisti-los na base.
O problema é que ao adicionar 1 mês à data 04/10/2007 00:00:00 e passar para novembro de 2007, a data é atualizada com 1 hora a mais, ou seja, 04/11/2007 01:00:00.
Não encontrei um modo de desativar o DST do TimeZone que o JBoss está utilizando e gostaria de saber se há alguma solução para isso. O que eu gostaria é que o sistema tratasse essas datas sem considerar o horário de versão. O código que eu estou utilizando para manipular a data é o seguinte:
public static Date adicionarMeses(Date data, int quantidadeMeses) {
Calendar cal = GregorianCalendar.getInstance(TimeZone.getDefault());
cal.set(Calendar.DST_OFFSET, 0);
cal.setTimeInMillis(data.getTime());
cal.add(Calendar.MONTH, quantidadeMeses);
return cal.getTime();
}
Encontrei alguns links dizendo que este problema só se aplica à formatação, mas meu erro ocorre justamente quando essa data é passada como parâmetro para o EntityManager da aplicação, fazendo uma busca por um atributo de data de uma Entity.
Alguém já passou por isso ou sabe como contornar o problema?
Obrigado.
ps: Estou rodando a aplicação web no jboss 4.2.2 utilizando seam 2.0.1.
