DateTimeFormatter引发日期字符串的DateTimeParseException

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

以下代码引发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,但是即使在网上阅读了文档记录的示例之后,我也无法使此功能正常工作。我该怎么办?

java datetime-format java-time
1个回答
0
投票

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

因此,您应该改用LocalDate,或修改您的输入以添加时间,例如2019-01-01T00:00:00Z

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