为未知的TemporalAccessor解析字符串

问题描述 投票:1回答:1

我正在获取一个具有未知时间(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。以及尝试一种接一种的格式。

更好的解决方案?

java date time java-time datetime-parsing
1个回答
0
投票

你的问题是DateTimeFormatter希望有一个时间,顾名思义。在您的情况下,您需要在模式中使用可选部分。

这应该按要求工作:

ISO_DATE_TIME
© www.soinside.com 2019 - 2024. All rights reserved.