这个问题在这里已经有了答案:
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 个回答)
DateTimeFormatter giving wrong format for edge cases [duplicate]
(3 个回答)
2年前关闭。
这是漫长的一天,我的大脑很累,所以也许我完全错过了一些东西,但是当我运行这条线时,怎么会,
System.out.println(
DateTimeFormatter.ofPattern("YYYYMMdd")
.withZone(ZoneId.of("UTC"))
.format(Instant.parse("2020-12-31T08:00:00Z"))
)
)
我得到
20211231
而不是 20201231
?额外的一年从何而来?
最佳答案
首都Y
根据 DateTimeFormatter 的官方文档,表示基于周的年份.更多关于它如何计算 here .
如果您将日期格式化程序与小写 y
一起使用,这将正常工作如yyyyMMdd
.
System.out.println(DateTimeFormatter.ofPattern("yyyyMMdd").withZone(ZoneId.of("UTC"))
.format(Instant.parse("2020-12-31T08:00:00Z")));
输出:
20201231
关于java - 将 Java Instant 格式化为 "YYYYMMdd"会增加一年?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59760226/