Ответ 1
Согласно странице JacksonFAQDateHandling:
Все объекты времени, связанные с TimeZone (java.util.Calendar и т.д.), Которые построены Jackson, используют стандартный часовой пояс (GMT), а не локальный часовой пояс (независимо от того, что может быть). То есть: Джексон по умолчанию использует GMT для всей обработки, если специально не указано иное.
В вашем случае, похоже, дата автоматически преобразуется в GMT/UTC. Попытайтесь явно указать свой часовой пояс, чтобы избежать конверсии UTC [как указано в вопросе. Как это время отключилось на 9 часов? (5 часов, 3 часа и т.д.) На той же странице]:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/MM/yyyy", timezone="EST")
Во-вторых, я думаю, что вы используете Date.toString()
для печати даты. Обратите внимание, что класс java Date
зависит от часового пояса, но его метод toString()
использует системный часовой пояс перед печатью.
Здесь это выглядит как 24/07/2015 00:00 UTC
преобразуется в 23/07/2015 19:00 EST
by toString()
. Оба они представляют один и тот же момент времени, но в разных часовых поясах.