Мое приложение должно получать сообщение JSON через HTTP-запрос, и я использую собственный десериализатор для сопоставления свойств LocalDateTime некоторых из моих классов. Но когда я получаю информацию через JsonParser, месяц смещается на -1.
Например, отправляемое сообщение: «2020-10-12T10: 20: 00.000Z» и сообщение внутри JsonParser: «2020-09-12T10: 20: 00.000Z».
Я использую Jackson 2.9.6 и SpringBoot 2.1.3. Любые идеи, что может быть причиной этого?
@Override
public LocalDate deserialize(final JsonParser p, final DeserializationContext ctxt)
throws IOException {
final String date = p.readValueAs(String.class);
if (date == null) {
return null;
}
try {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
ZonedDateTime dateToParse = ZonedDateTime.parse(date, DateTimeFormatter.ISO_DATE_TIME);
return dateToParse.toLocalDate();
} catch (final DateTimeParseException ex) {
LOGGER.error(ex.getMessage());
return null;
}
}
Моя проблема находится на "окончательная дата строки = p.readValueAs (String.class)". p содержит полученное значение, а его месяц смещен на -1.