Джексон @JsonFormat установил дату на один день меньше - программирование
Подтвердить что ты не робот

Джексон @JsonFormat установил дату на один день меньше

Я использовал Spring Date Rest с Spring Boot в моем проекте. Этот проект имеет объект, и я использовал аннотацию @JsonFormat для форматирования поля даты, которое будет получено от моего Json. Формат поля Date - "dd/MM/yyyy". Когда я отправляю в свой json значение "08/07/1980", Джексон преобразуется в значение "07/07/1980".

Проблема заключается в том, что @JsonFormat устанавливает дату на один день меньше

Это мой исходный код

@Temporal(TemporalType.DATE)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy", locale = "pt-BR", timezone = "UTC")
private Date birthDate;

Спасибо

4b9b3361

Ответ 1

Я решил проблему, используя:

@Temporal(TemporalType.DATE)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy", locale = "pt-BR", timezone = "Brazil/East")
private Date birthDate;

Я изменил часовой пояс на "Бразилия/Восток" или "Америка/Sao_Paulo" и теперь работает

Спасибо

Ответ 2

Ответ @William работает, но вы должны добавить тезисы в свои файлы application.properties:

spring.jackson.time-zone=Brazil/East
spring.jackson.locale=pt-BR

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