OffsetDateTime всегда конвертируется в UTC - PullRequest
1 голос
/ 04 августа 2020

У меня очень простое приложение для весенней загрузки, которое получает и возвращает отметку времени.

Код следующий:

Контроллер

@RestController
public class DemoController {

    @PostMapping("/")
    public Model test(@RequestBody Model model) {
        return model;
    }
}

Модель

public class Model {
    public OffsetDateTime timestamp;
}

Я заметил, что когда я отправляю часовые пояса, которые не соответствуют C, объект, который я получаю, конвертируется в UT C - например, следующий вызов:

{
    "timestamp": "2017-07-21T17:32:28+01:00"
}

имеет следующий ответ:

{
    "timestamp": "2017-07-21T16:32:28Z"
}

Есть ли способ отключить это поведение и получить время в том виде, в каком оно было отправлено?

1 Ответ

3 голосов
/ 04 августа 2020

Это происходит потому, что Джексон использует часовой пояс контекста по умолчанию при десериализации. В Spring-Boot вы можете довольно легко отключить это, просто добавив:

spring.jackson.deserialization.adjust-dates-to-context-time-zone=false

в свой application.properties.

...