微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Java的java.time.format.DateTimeFormatter#formatLocalDateTime增加一年?

如何解决为什么Java的java.time.format.DateTimeFormatter#formatLocalDateTime增加一年?

维基百科

[YYYY]表示ISO周编号年份,与传统的公历年份略有不同(请参见下文)。

  1. YYYY 是本年度的ISO-8601样式表示形式。
  2. yyyy 是公历年份的表示形式。

由于两者的计算可以相差+1或-1,因此格式不同。在更多有用的信息YEAR_OF_ERAYEARweekBasedYear

解决方法

这是代码:

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。为什么?

这是一个奇怪的错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。