You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java DateTimeFormatter格式化LocalDate出现年份偏移异常问题

问题复现说明

该问题可以100%复现,所有实现了JSR-310时间规范的JDK版本(Java 8及以上)都可以复现该现象,和你使用的Netbeans 12.5开发环境、Java 17版本没有关联。

问题出现原因
  • 你在DateTimeFormatter的格式化规则中使用了大写的YYYY作为年份占位符,它代表的是基于周计算的年份,规则为:如果某一周有不少于4天属于某一个日历年,那么这一整周的所有日期的周计算年份都归属到该年。
  • 2021年1月1日属于2020年12月28日~2021年1月3日的这一周,该周有4天落在2020年,因此这一周所有日期的YYYY取值都是2020,就出现了你观察到的年份少1的问题。
  • 2021年11月14日所在的周大部分天数都落在2021年,所以YYYY的取值和常规公历年一致,看起来输出结果正常。
修复方案

将格式化字符串中的大写YYYY替换为小写的yyyy即可,yyyy是标准公历日历年的占位符,符合普通业务场景的日期格式化需求。

内容的提问来源于stack exchange,提问作者duaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:15:03