Спасибо за решение, но оно не работает для меня. Я имею дело со сценарием, в котором я устанавливаю дату (с информацией о времени и часовом поясе) в базе данных оракула. Я использую Ibatis, чтобы извлечь эту дату и назначить ее объекту Java даты. Я реализовал свой TypeHandlerCallback следующим образом:
открытый класс DateTimezoneTypeHandler реализует TypeHandlerCallback {
public void setParameter (установщик ParameterSetter, параметр Object)
выдает SQLException
{java.util.Date date = (java.util.Date) параметр; if (date == null) setter.setNull (Types.TIMESTAMP); else {Timestamp timestamp = new Timestamp (date.getTime ()); Календарь календарь = Calendar.getInstance (TimeZone.getTimeZone ("UTC")); setter.setTimestamp (метка времени, календарь); }}
@ Переопределить публичный объект getResult (получатель ResultGetter) выдает SQLException {
Календарь календаря = Calendar.getInstance (TimeZone.getTimeZone ("UTC"));
return getter.getTimestamp (calendar);
}
@ Переопределить public Object valueOf (String s) {throw new UnsupportedOperationException ("DateTimezoneTypeHandler.valueOf () не поддерживается."); }}
Я сохранил свою дату в базе данных в часовом поясе EST, поэтому получатель имеет дату в часовом поясе EST. Теперь, когда дата считывается из базы данных, вызывается функция getResult, но дата EST не преобразуется в UTC / Часовой пояс GMT. Это конвертирование даты с часовым поясом EST в дату с часовым поясом моей локальной системы
** открытый объект getResult (получатель ResultGetter) выдает SQLException {
Календарь календаря = Calendar.getInstance (TimeZone.getTimeZone ("UTC"));
return getter.getTimestamp (calendar);
} **
Вот мое сопоставление sql:
Я не понимаю, в чем проблема с реализацией этого метода и почему не требуется его функциональность.
Пожалуйста, дайте мне знать, если у кого-нибудь есть какие-либо предложения / решения по этому вопросу. Я действительно ценю это.