Формат дату в Jackson Spring Boot

164
05 декабря 2017, 20:51

Ко мне приходит время в таком виде: "2017-12-04T15:45:11.635Z".

Для преобразование в Date ставлю такую аннотацию над соответствующим полем:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-ddTHH:mm:ssZ")

На что получаю такую ошибку:

{
    "timestamp": 1512388174163,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "org.springframework.web.client.RestClientException",
    "message": "Could not extract response: no suitable HttpMessageConverter found for response type [class ru.something.api.domain.AwesomeObject] and content type [application/json;charset=UTF-8]",
    "path": "/consent/test"
}

Как формат необходимо указать для правильной десериализации времени?

Answer 1

Для того, чтобы затолкать данную строку в переменную, нужно использовать такой паттерн
String s = "2017-12-04T15:45:11.635Z"; ZonedDateTime zonedDateTime = ZonedDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"));

Он же стандарт ZonedDateTime zonedDateTime = ZonedDateTime.parse(s, DateTimeFormatter.ISO_ZONED_DATE_TIME);

А вообще в частном случае для присвоения переменной переменно типа ZonedDateTime можно вообще без паттернов ZonedDateTime zonedDateTime = ZonedDateTime.parse(s);

Обратите внимание, что используется именно ZonedDateTime , потому как переменных типа Date довольно много в разных пакетах, не факт , что она предназначена для хранения не только даты , а и времени да еще и с часовым поясом. Посему мой совет - распарсите сначала в переменную ZonedDateTime , а там уже достаточно методов из коробки для конвертации куда угодно, если, конечно, это вообще нужно

READ ALSO
Получить CID, MCC, MNC, LAC

Получить CID, MCC, MNC, LAC

Для реализации приложения требуется получить GSM Cell ID, к которой подключено устройство, приложение не нуждается в мощном интерфейсе, поэтому...

203
Ошибка запуска приложения при отладке

Ошибка запуска приложения при отладке

Не отображается название процесса в logcat, процесс устройства эмулятора отображаетсяИспользую Android Studio 3

187
JustifyTextView - выравнивание текста по обоим краям

JustifyTextView - выравнивание текста по обоим краям

Появилась нужда выровнять текст по обоим краям, WebView не подходит, хочу именно в TextView, посмотрел несколько библиотек, но для такого не совсем...

162