gpt4 book ai didi

java - 解析未知 TemporalAccessor 的字符串

转载 作者:行者123 更新时间:2023-11-30 06:16:46 25 4
gpt4 key购买 nike

我收到一个未知时间(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);

决定使用哪个 DateTimeFormatter 字符串的长度或“T”的出现,在我看来有点老套。以及尝试一种又一种格式。

还有更好的解决方案吗?

最佳答案

您的问题是 ISO_DATE_TIME 需要一个时间,如名称所示。在您的情况下,您需要在模式中使用可选部分。

这应该按要求工作:

DateTimeFormatter FMT = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_DATE)
.optionalStart() //HERE WE INDICATE THAT THE TIME IS OPTIONAL
.appendLiteral('T')
.append(DateTimeFormatter.ISO_LOCAL_TIME)
.toFormatter();

String input = "2018-02-28";
TemporalAccessor dt = FMT.parseBest(input, LocalDateTime::from, LocalDate::from);

关于java - 解析未知 TemporalAccessor 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49026914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com