【发布时间】:2018-10-17 09:15:16
【问题描述】:
我们的 Rest API 被多个外部方使用。它们都使用“ISO-ish”格式,但时区偏移的格式略有不同。以下是我们看到的一些最常见的格式:
2018-01-01T15:56:31.410Z2018-01-01T15:56:31.41Z2018-01-01T15:56:31Z2018-01-01T15:56:31+00:002018-01-01T15:56:31+00002018-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,但会为变体 5 和 6 生成 400 Bad Request 错误,但有以下异常:
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 标准)?
【问题讨论】:
标签: spring-mvc spring-boot kotlin