我正在获取一个具有未知时间(ISO格式的日期,时间或时间戳)的请求参数,并希望将其解析为java.time.temporal.TemporalAccessor
:
LocalDate
这样的日期时,"2018-02-28"
LocalDateTime
当字符串表示像"2018-02-28T11:20:00"
这样的时间戳以下尝试导致DateTimeParseException
:
TemporalAccessor dt = DateTimeFormatter.ISO_DATE_TIME.parseBest(str, LocalDateTime::from, LocalDate::from);
决定字符串的长度或qzxswpoi使用的“T”的出现,在我看来有点hacky。以及尝试一种接一种的格式。
更好的解决方案?
你的问题是DateTimeFormatter
希望有一个时间,顾名思义。在您的情况下,您需要在模式中使用可选部分。
这应该按要求工作:
ISO_DATE_TIME