Смещение потеряно для OffsetDateTime с помощью службы Spring Boot REST
Я использую Java
OffsetDateTime
для хранения времени как на стороне клиента, так и на стороне сервера. Когда я отправляю информацию о времени на сервер, локальная часть даты и времени выглядит так:
"2021-06-15T15:43:50"
и смещение
+02:00
(Центральноевропейское летнее время). Однако, когда время достигает моей весенней загрузки REST Service, он десериализуется как:
"2021-06-15T13:43:50"
без смещения. И клиент, и сервер находятся на одном хосте в центральной Европе (моя машина разработчика).
сериализуемое поле выглядит так:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")private OffsetDateTime lastWriteTime;
Почему у меня нулевое смещение на стороне сервера? Как я могу иметь "локальное" смещение и на стороне сервера?
1 ответ
Вероятно, ваш вопрос должен быть закрыт из-за отсутствия достаточных сведений об отладке. Но я угадаю, что касается твоей проблемы.
Я предполагаю, что вы храните значение в столбце базы данных типа, аналогичного типу стандарта SQL
TIMESTAMP WITHOUT TIME ZONE
а не соответствующий тип
TIMESTAMP WITH TIME ZONE
.
Кстати, я не использую Spring или Jackson, но мне интересно, нужно ли вам указывать шаблон форматирования. Ваш шаблон определен в стандарте ISO 8601. В java.time классы используют ISO 8601 форматов по умолчанию при разборе / генерации строк.