java - 将 Java Instant 格式化为 "YYYYMMdd"会增加一年?

标签 java datetime dateformatter

这个问题在这里已经有了答案:





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/

相关文章:

java - 蓝牙 : Service discovery failed

Java 许可 API

DateFormatter 中的 Swift 语言错误?

c# - 值(value)随时间呈指数衰减

python - 在 seaborn 热图上显示日期

java - Joda-Time 库指定 mili 秒精度

java - 正则表达式匹配另一个单词第一次出现的第二个单词

java - 表单提交thymeleaf和Spring boot后如何保持在同一页面?

python - 如何将日期时间设置为zaxis而不出现错误: OverflowError: Python int too large to convert to C long for 3D plot

python - PANDAS TimeGrouper 具有个性化的下采样起点