This question already has answers here:
Why does Java's java.time.format.DateTimeFormatter#format(LocalDateTime) add a year?

(1 个回答)



Using DateTimeFormatter on january first cause an invalid year value

(1 个回答)


1年前关闭。




我正在尝试将 2019-12-30 格式的日期转换为 30-12-2019 格式的日期,为此我想到了使用 DateTimeFormatter 并且我有以下代码:
LocalDate date = LocalDate.parse("2019-12-30");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-YYYY");
System.out.println(formatter.format(date));

然而,令我惊讶的是,这会返回一个输出:
30-12-2020

而不是预期的 30-12-2019 。如果日期设置为 2019-11-30 ,它会正确返回 30-11-2019 。我正在做一些非常错误的事情,但我无法弄清楚到底是什么。有人可以帮忙吗?

最佳答案

来自 DateTimeFormatter documentation: ,表示符号、含义和例子:



因此,您正在格式化基于周的年份,而不是常规年份。 2019 年 12 月 30 日属于 2020 年的第一周,因此您的输出。

使用 yyyy (year-of-era) 或 uuuu (year) 而不是 YYYY ,你会得到 2019 。

基本上,YYYY 通常应该与 w(基于周的年)和 E(星期几)一起使用。

关于java - DateTimeFormatter 在格式化后添加年份到日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59343748/

10-13 09:11