Смещение потеряно для 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 форматов по умолчанию при разборе / генерации строк.

Другие вопросы по тегам