gpt4 book ai didi

java - DateTimeFormatter 抛出日期字符串的 DateTimeParseException

转载 作者:行者123 更新时间:2023-12-01 16:43:16 25 4
gpt4 key购买 nike

以下代码抛出 DateTimeParseException:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
ZonedDateTime dt = ZonedDateTime.parse(
"2019-01-01",
formatter.withZone(ZoneId.of("UTC"))
)

它还会抛出异常

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
ZonedDateTime dt = ZonedDateTime.parse(
"2019-01-01",
formatter)
)

也是如此

DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE;
ZonedDateTime dt = ZonedDateTime.parse(
"2019-01-01",
formatter)
)

SimpleDateFormat 解析器工作得很好 - 我正在争论是否使用它,尽管它不是线程安全的并且(我相信?)计划被弃用。

显然,我更喜欢使用 java.time API,但即使按照在线记录的示例,我也无法让这个东西工作。我该怎么办?

最佳答案

ZonedDateTime 必须包含日期和时间;您的输入 2019-01-01 仅包含日期。

因此,您应该使用 LocalDateLocalDate#atTime 结合使用(获取 LocalDateTime 对象)和 LocalDateTime#atZone (使用 ZoneOffset.UTC 获取 ZonedDateTime)。

<小时/>
var formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
var zonedDateTime = LocalDate.parse("2019-01-01", formatter)
.atTime(1, 2, 3) // (hours, minutes, seconds)
.atZone(ZoneOffset.UTC);

zonedDateTime 的值为:

2019-01-01T01:02:03Z

关于java - DateTimeFormatter 抛出日期字符串的 DateTimeParseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58493403/

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