为什么Java';s java.time.format.DateTimeFormatter#format(LocalDateTime)添加一年?

为什么Java';s java.time.format.DateTimeFormatter#format(LocalDateTime)添加一年?,java,time,localization,utc,datetimeformatter,Java,Time,Localization,Utc,Datetimeformatter,代码如下: LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(1451438792953L), ZoneId.of("UTC")); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYY-MM-dd'T'HH:mm:ss.SSS'Z'"); String output = dateTimeFormatter.

代码如下:

LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(1451438792953L), ZoneId.of("UTC"));
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYY-MM-dd'T'HH:mm:ss.SSS'Z'");
String output = dateTimeFormatter.format(localDateTime);
这是
localDateTime
的值:

2015-12-30T01:26:32.953
这是
输出的值

2016-12-30T01:26:32.953Z
为什么要加一年

java.time.temporal.WeekFields
中,有两种方法带有
newYearWeek
,它们有时会将年份增加
1
。为什么?

这是一个奇怪的错误。

来自:

[YYYY]表示ISO周编号年份,略为 不同于传统的公历年(见下文)

  • YYYY
    是一种ISO-8601风格的年份表示法
  • yyy
    是公历纪年的表示形式 由于两者的计算结果可能相差+1或-1,因此格式不同。更多有用信息,请访问和。

    参见此处