本文介绍了为什么Java的java.time.format.DateTimeFormatter#format(LocalDateTime)增加一年?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是代码:
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
这是output
的值:
2016-12-30T01:26:32.953Z
为什么要增加一年?
在java.time.temporal.WeekFields
中,有几种使用newYearWeek
的方法,这些方法有时会使年份增加1
.为什么?
In java.time.temporal.WeekFields
there are a couple of methods with a newYearWeek
which increment the year by 1
on occasion. Why?
这是一个奇怪的错误.
推荐答案
来自 Wikipedia :
-
YYYY
是年份的ISO-8601样式表示. -
yyyy
是公历年份表示.
YYYY
is an ISO-8601 style representation of the year.yyyy
is the Gregorian year-of-era representation.
由于两者的计算结果可能相差+1或-1,因此格式不同.有关更多有用的信息,请参见 YEAR_OF_ERA
, YEAR
和 weekBasedYear
.
Since the the calculation of the two can be different by +1 or -1, hence the formatting. More useful info at YEAR_OF_ERA
, YEAR
, and weekBasedYear
.
这篇关于为什么Java的java.time.format.DateTimeFormatter#format(LocalDateTime)增加一年?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!