Наш API отдыха используется несколькими внешними сторонами. Все они используют форматы "ISO-ish", но форматирование смещения часового пояса немного отличается. Вот некоторые из наиболее распространенных форматов, которые мы видим:
2018-01-01T15:56:31.410Z
2018-01-01T15:56:31.41Z
2018-01-01T15:56:31Z
2018-01-01T15:56:31+00:00
2018-01-01T15:56:31+0000
2018-01-01T15:56:31+00
В моем контроллере я использую следующие аннотации:
@RequestMapping(value = ["/some/api/call"], method = [GET])
fun someApiCall(
@RequestParam("from")
@DateTimeFormat(iso = ISO.DATE_TIME)
from: OffsetDateTime
) {
...
}
Он отлично разбирает вариант 1-4, но выдает ошибку 400 Bad Request для вариантов 5 и 6 со следующим исключением:
Caused by: java.time.format.DateTimeParseException: Text '2018-01-01T13:37:00.001+00' could not be parsed, unparsed text found at index 23
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1952)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
Как мне сделать так, чтобы он принимал все вышеупомянутые варианты форматирования ISO (даже если они не на 100% соответствуют стандарту ISO)?