преобразование времени в joda - PullRequest
16 голосов
/ 13 января 2012

оракул sql:

select trunc( sysdate, 'Month') month
from dual

Java:

java.sql.Date sqlDate = resultSet.getDate("month");
log.info(sqlDate);
DateTime dateTime = new DateTime(sqlDate.getTime());
log.info(dateTime);
dateTime = dateTime.withMillisOfDay(0);
log.info(dateTime);

Выход:

2012-01-01

2012-01-01T 01 : 00: 00.000 + 07: 00

2012-01-01T 00 : 00: 00.000 + 07: 00

где прошел дополнительный час?

Ответы [ 3 ]

15 голосов
/ 25 января 2012

Используйте LocalDate.fromDateFields(date) для интерпретации даты SQL как локальной (без учета часового пояса). Затем вы можете использовать методы на LocalDate, чтобы получить DateTime, если это необходимо (хотя, если ваш объект действительно "просто дата", тогда LocalDate - правильный объект для использования.

0 голосов
/ 15 марта 2014

Вы должны попробовать этот код.

LocalDate issueDate = new LocalDate(new Date());
System.out.println(new java.sql.Date(issueDate.toDate().getTime()))
0 голосов
/ 13 января 2012

Конструктор по умолчанию использует системный конструктор по умолчанию, и это может вызывать проблемы с DST. Я обнаружил, что функция toDateMidnight действительно полезна при попытке убедиться, что я действительно в полночь.

...