Преобразуйте joda.time.DateTime в java.sql.Date и сохраните часовой пояс

У меня следующий сценарий:

  • Управление Swing, возвращающее объект Calendar
  • Промежуточный DateTimeобъект, который я использую для тяжелых манипуляций с датой/временем (joda)
  • Подключение к базе данных(OraclePreparedStatement)который принимает только объект java.sql.Date

Моя проблема в том, что объекты Calendarи DateTimeправильно отображают дату по Гринвичу (, которую я хочу ), но когда я конвертирую в java.sql.Dateдля отправки в базу данных, дата преобразуется к местному часовому поясу.

Например:

  • Calendarи DateTimeявляются 2012 -08 -13T23 :59 :59.000Z (правильный GMT)
  • В результате java.sql.Dateбудет 2012 -08 -14 (неверная локальная дата UTC+2)

Ниже приведен код, который я использую для преобразования.

DateTime dateGmt = new DateTime(calendarGmt.getTimeInMillis(), DateTimeZone.UTC);
java.sql.Date sqlDate = new java.sql.Date(dateGmt.getMillis());

Я не знаю, как создать объект java.sql.Date, сохранив правильный часовой пояс. Также вполне возможно, что я делаю неправильное преобразование.

5
задан Justin Skiles 13 August 2012 в 16:07
поделиться