java time format,为什么Java的java.time.format.DateTimeFormatter#format(LocalDateTime)增加一年?...

This is the code:

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);

This is the value of localDateTime:

2015-12-30T01:26:32.953

This is the value of output:

2016-12-30T01:26:32.953Z

Why does it add a year?

In java.time.temporal.WeekFields there are a couple of methods with a newYearWeek which increment the year by 1 on occasion. Why?

This is a strange bug.

解决方案

[YYYY] indicates the ISO week-numbering year which is slightly

different from the traditional Gregorian calendar year (see below).

YYYY is an ISO-8601 style representation of the year.

yyyy is the Gregorian year-of-era representation.

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值