Java - data salva como no dia anterior

Eu estou experimentando um comportamento muito estranho ao salvar datas no banco de dados. No meu servidor (Linux centOS 6.2) eu uso servidor de aplicativos glassfish (3.1.1 - build 12) e Java (1.7.0_09), o aplicativo é desenvolvido em Java + GWT, e usa o servidor PostgreSQL (9.2.1). Dentro do aplicativo existem vários campos de data que são salvos no banco de dados. Os campos de data usam datepicker (http://code.google.com/p/gwt-datepicker, r30).

O atributo date da relação db é o tipo de data (não timestamp). Algumas datas são salvas no dia anterior no banco de dados. O problema ocorre apenas para datas entre intervalos, e. entre 31.03.1968 e 27.10.1968, o que me faz pensar em algum tipo de questão de horário de verão. Mas como isso não acontece em 1969, por exemplo, não consigo isolar o problema muito bem. Eu estou tentando encontrar algum outro intervalo de datas dentro do qual o problema acontece.Por exemplo, se eu selecionar 19.05.1968 no aplicativo, depois de salvar no banco de dados, a data será salva como 18.05.1968.

O mais estranho é que eu tenho outra instância do mesmo aplicativo em outro servidor, e para as mesmas datas eles são salvos corretamente. Isso me faz pensar que o problema pode depender de:

configuração glassfish;java (java.util.Data implementação?);algum tipo de configuração do servidor que eu estou perdendo

Tentei definir para a Europa / Roma (meu fuso horário) todas as configurações possíveis do meu servidor, mas nada. Qualquer ideia? Como eu poderia resolver ou investigar esse problema?

ATUALIZAR: 1968 foi um ano bissexto. O problema também acontece em 1972, que é novamente um ano bissexto. Resumindo:o problema "data-salvo-um-dia-antes" acontece em anos bissextos durante o intervalo de data do horário de verão.

A parte do código onde a data é criada é:

Date d = dateField.getSelectedDate();
if (d != null) {
    txtVal = DateTimeFormat.getFormat("dd/MM/yyyy").format(d);
}

onde dateField é declarado como:

transient private DatePicker dateField;

O pacote éorg.zenika.widget.client.datePicker.DatePicker (gwt-datepicker-r30 mencionado antes) e DateTimeFormat se refere acom.google.gwt.i18n.shared.DateTimeFormat

UPDATE depois de aceitar a resposta:

Eu usei esta solução alternativa: quando eu crio uma data, eu uso o seguinte código:

final long hours12 = 12L * 60L * 60L * 1000L;
Date d = new Date(d1.getTime() + hours12);

questionAnswers(3)

yourAnswerToTheQuestion