#spring #datetime #jodatime #spring-jdbc
#spring #datetime #jodatime #spring-jdbc
Вопрос:
У меня есть значение временной метки в столбце базы данных 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
Спасибо.
Комментарии:
1. Насколько я понял, если вы знаете, что временная метка базы данных находится в UTC, но Oracle не знает (это не
timestamp with time zone
), ваша временная метка2019-03-08 15:07:37.232
будет получена неправильно как эта дата и время в вашем часовом поясе, поэтому вам нужно преобразовать ее обратно в UTC. Однако Oracle и JdbcTemplate Spring не являются моим домашним полем.
Ответ №1:
Одним из решений, которое сработало, было изменение способа извлечения значения столбца временной метки из базы данных. Приведенный ниже фрагмент предназначен для преобразования значения столбца временной метки в joda DateTime без потери / преобразования часового пояса
new DateTime(resultSet.getTimestamp("CreatedDateTime",
Calendar.getInstance(TimeZone.getTimeZone("UTC"))), DateTimeZone.UTC)
Надеюсь, это поможет и другим.
Ответ №2:
Если у вас уже есть объект DateTime, существует метод
public DateTime withZone(DateTimeZone newZone)
который вернул бы копию datetime с другим часовым поясом, сохраняя миллисекундный момент
например:- dateTime.withZone(DateTimeZone.UTC)
Комментарии:
1. У меня нет объекта DateTime. У меня есть объект Timestamp из базы данных.