У меня возникла проблема с логикой дат, которую я выделил для Джексона, сериализатора JSON.
В базе данных и в точке отладки приложения правильные даты, и все записывается с использованием часового пояса по умолчанию. Однако в сериализации добавляются 4 часа. Я обнаружил, что это можно исправить, сказав Джексону специально использовать EST (по умолчанию это было UTC). Как показано ниже:
@JsonFormat(shape= JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss.SSSZ", timezone="America/New_York")
private Date startDate;
Однако проблема в том, что только локальный использует EST, а сервер будет использовать UTC. Мне нужен Джексон, чтобы использовать системные значения по умолчанию.
К счастью, я нашел этот похожий вопрос , который подтверждается документацией . Новое решение:
@JsonFormat(shape= JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss.SSSZ", timezone=JsonFormat.DEFAULT_TIMEZONE)
private Date startDate;
Однако это не работает! Я пробовал также timezone='DEFAULT_TIMEZONE'
и множество других вещей, но во всех случаях выход API по-прежнему на 4 часа опережает число в базе данных.
Другие вещи, которые я пробовал:
- выход из системы
JsonFormat.DEFAULT_TIMEZONE
возврат ##default
.
- logging
TimeZone.getDefault().getDisplayName()
возвращает Eastern Standard Time
.
Джексон версия 2.9.
Есть предложения?