Конвертировать TimeStamp в Joda DateTime без преобразования часового пояса - PullRequest
1 голос
/ 08 марта 2019

У меня есть значение метки времени в столбце базы данных Oracle, сохраненном в UTC. Я хочу прочитать его через jdbcTemplate Spring и преобразовать его в объект joda DateTime без какого-либо преобразования часового пояса, то есть прочитать его как есть, без преобразования или потери часового пояса. Например, если временная метка ввода 2019-03-08 15:07:37.232, я хотел бы иметь объект DateTime со значением 2019-03-08T15:07:37.232Z Как мне этого добиться?

Обратите внимание на этот код - new DateTime(timestamp.getTime(), DateTimeZone.UTC)) не помогает, так как предполагает, что введенная временная метка находится в местном часовом поясе, и преобразует ее в UTC. Для приведенного выше значения 2019-03-08 15:07:37.232 результат равен 2019-03-08T09:37:37.232Z

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Одним из решений, которое работало, было изменение способа извлечения значения столбца метки времени из базы данных. Приведенный ниже фрагмент кода работает для преобразования значения столбца метки времени в joda DateTime без потери / преобразования часового пояса

new DateTime(resultSet.getTimestamp("CreatedDateTime",
                        Calendar.getInstance(TimeZone.getTimeZone("UTC"))), DateTimeZone.UTC)

Надеюсь, что это помогает и другим.

0 голосов
/ 08 марта 2019

Если у вас уже есть объект DateTime, существует метод

public DateTime withZone(DateTimeZone newZone) 

, который возвращает копию даты и времени с другим часовым поясом, сохраняя миллисекундный момент

, например: - dateTime.withZone(DateTimeZone.UTC)

...