为未知的TemporalAccessor解析字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为未知的TemporalAccessor解析字符串相关的知识,希望对你有一定的参考价值。

我正在获取一个具有未知时间(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

以上是关于为未知的TemporalAccessor解析字符串的主要内容,如果未能解决你的问题,请参考以下文章

Java:无法从 TemporalAccessor 获取 LocalDate

无法使用Java 8中的DateTimeFormatter和ZonedDateTime从TemporalAccessor获取ZonedDateTime

10hutool实战:TemporalAccessorUtil{TemporalAccessor} 工具类封装

10hutool实战:TemporalAccessorUtil{TemporalAccessor} 工具类封装

Java SE 8 TemporalAccessor.from 与 java.time.Instant 对象一起使用时出现问题

如何将RFC 3339日期字符串解析为ZonedDateTime?