У меня есть класс, который содержит следующие атрибуты:Неудачное время при использовании @JsonFormat (+1 час)
@JsonFormat(pattern= "yyyy/MM/dd hh:mm")
private java.util.Date begin;
Теперь я делаю POST для моего отдыха службы:
mockMvc.perform(post("/rest/foo")
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.content("{ \"begin\": \"2016/12/04 10:20\" }")
.andExpect(status().isOk())
.andReturn();
Наконец, переменная «begin» имеет значение: Sun Dec 04 11:20:00 CET 2016
Итак, каким-то образом сопоставление объектов JSON с объектами добавляет один час.
Одно из решений заключается в использовании:
@JsonFormat(pattern= Constants.TIMESTAMP_FORMAT, timezone = "CET")
private Date begin;
Но летом мы CEST, поэтому я не могу жёстко часовой пояс.
Любые решения? Благодаря!
Btw: Первоначально дата взята из jquery datetimepicker.
Джексон по умолчанию использует GMT, один час за СЕТ – chaoluo
я бы порекомендовал вам иметь дело чисто со временем UTC в вашем серверном приложении, и рассмотреть превращая их в часовой пояс пользователя чисто передним концом. Таким образом, ваш API должен отправить, например. временную метку Unix или строку ISO8601. – jonrsharpe