Java - дата сохранена как накануне

Я испытываю очень странное поведение при сохранении дат в базе данных. На моем (Linux centOS 6.2) сервере я использую сервер приложений glassfish (3.1.1 - сборка 12) и Java (1.7.0_09), приложение разработано на Java + GWT и использует сервер PostgreSQL (9.2.1). Внутри приложения есть несколько полей даты, которые сохраняются в БД. В полях даты используется datepicker (http://code.google.com/p/gwt-datepicker, r30).

Атрибутом даты отношения db является тип даты (не отметка времени). Некоторые даты сохраняются за день до этого в базе данных. Проблема возникает только для дат между интервалами, например, между 31.03.1968 и 27.10.1968, что заставляет меня задуматься о летнем времени. Но так как это неНапример, в 1969 году я не могу выделить проблему очень хорошо. Я'Я пытаюсь найти какой-то другой интервал дат, в течение которого возникает проблема.Например, если я выберу 19.05.1968 в приложении, после сохранения в базе данных дата будет сохранена как 18.05.1968.

Странно то, что у меня есть другой экземпляр того же приложения на другом сервере, и на те же даты они сохраняются правильно. Это заставляет меня думать, что проблема может зависеть от:

конфигурация стеклянной рыбы;java (реализация java.util.Date?);какая-то конфигурация сервера I 'м отсутствует

Я пытался установить для Европы / Рима (мой часовой пояс) каждую возможную конфигурацию моего сервера, но ничего. Любая идея? Как я мог решить или исследовать эту проблему?

ОБНОВИТЬ: 1968 год был високосным. Проблема также происходит в 1972 году, который снова является високосным годом. Подводя итог:"дата сохраняемых-один-день, прежде чем» проблема возникает в високосные годы в течение летнего периода времени.

Часть кода, в которой создается объект даты:

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

где dateField объявлен как:

transient private DatePicker dateField;

Пакетorg.zenika.widget.client.datePicker.DatePicker (gwt-datepicker-r30, упомянутый ранее), а DateTimeFormat ссылается наcom.google.gwt.i18n.shared.DateTimeFormat

ОБНОВЛЕНИЕ после принятия ответа:

Я использовал этот обходной путь: когда я создаю дату, я использую следующий код:

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

Ответы на вопрос(3)

Ваш ответ на вопрос