news 2026/8/4 9:05:42

求你了,别用 YYYY-MM-dd!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
求你了,别用 YYYY-MM-dd!

昨天下午看同事提交的代码,扫到这么一行,心里顿时咯噔一下:
new SimpleDateFormat(“YYYY-MM-dd”)

很多人敲代码顺手,或者被代码补全带偏,喜欢把 Y 和 M 全大写。但这在 Java 里,等于给系统埋了一颗隐蔽性极强的“跨年雷”,年底必炸。

为了预现场景,我构建了一段伪代码,故意把时间设置到了 2026 年 12 月 31 日:

importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;publicclassDateFormatTest{publicstaticvoidmain(String[]args){// 故意构造一个跨年边缘的时间:2026年12月31日Calendarcalendar=Calendar.getInstance();calendar.set(2026,Calendar.DECEMBER,31);Datedate=calendar.getTime();// 正确写法-小写 yyyySimpleDateFormatsdf1=newSimpleDateFormat("yyyy-MM-dd");// 错误写法- 大写 YYYYSimpleDateFormatsdf2=newSimpleDateFormat("YYYY-MM-dd");System.out.println("小写 yyyy: "+sdf1.format(date));System.out.println("大写 YYYY: "+sdf2.format(date));}}

运行结果:

小写 yyyy:2026-12-31大写YYYY:2027-12-31// 注意看,年份直接错乱了

发现没?原本是 2026 年的日期,用大写的 YYYY 格式化后,直接变成了 2027 年!

为什么会这样?

Java 的日期格式化标准里,大小写不同,意思完全不一样:

小写 yyyy:代表真实的日历年份,也就是你日历上看到的那一年。

大写 YYYY:代表的是 Week-Based-Year(基于周的年份)。简单来说,只要这一周跨年了——比如这周既有 2026 年底的几天,又包含了 2025 年的 1 月 1 日——那这周里的任何一天,年份都会被算作下一年。

这代码最恶心的地方就在这:平时测试根本发现不了,一切正常。只有到了每年最后那几天才会突然出问题,试想一下:用户的登录 Token 会因为「签发时间在未来」被集体拦截导致大面积掉线、扔进 MQ 的延迟消息也直接排到了下一年……细思恐极了朋友!

赶紧自查!

今天抽空打开 IDEA,按下 Ctrl + Shift + F(Mac 是 Cmd + Shift + F),全局搜一下 "YYYY(记得带上前引号)。如果真搜到了,赶紧改成 yyyy,算是提前排了个大雷。

顺手把这篇文章丢到团队群里,让大家都自查一下,能救一个是一个。


关注我的公众号,每天查看最新文章哦!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 15:10:47

AI之Transform encoder/decoder抽象理解

从任务类型和信息流这两个根本角度来分析。 一、 Encoder-Decoder 架构的好处:天生为“翻译”而生 Encoder-Decoder架构,也被称为Seq2Seq(序列到序列)模型,其核心优势在于它处理两种不同“语言”或“领域”信息的能力…

作者头像 李华
网站建设 2026/7/14 15:10:52

YOLO26改进99:全网首发--c3k2模块添加CNCM模块

论文介绍 在实际红外(IR)成像系统中,有效学习一致的条纹噪声去除模型至关重要。现有的大多数去条纹方法因跨层级语义间隙和全局列特征表征不足,无法精确重建图像。为解决这一问题,提出了一种新型红外图像去条纹方法——非对称采样校正网络(ASCNet),该方法能有效捕获全局…

作者头像 李华
网站建设 2026/7/14 15:10:52

python+Ai技术框架的计算思维与人工智能学习网站设计与实现django flask

目录PythonAI技术框架的计算思维与人工智能学习网站设计与实现技术选型核心功能模块计算思维培养设计Django实现要点Flask实现要点部署与优化关键注意事项项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合…

作者头像 李华
网站建设 2026/7/14 15:10:51

openclaw造神记录-01:XyvaClaw 从V1到V5的蜕变

📖 前言:进化的本质 造神计划不是一次性的升级,而是一个持续进化的过程。基于openclaw开发,从V1的基础工具到V5的认知伙伴,每一次进化都源于实际需求、错误教训和模式提炼。开源的xyvaclaw是V4版,想体验可…

作者头像 李华
网站建设 2026/7/14 15:10:53

给26岁想要转行网络安全行业的人一个忠告!

26岁基本上是一个硕士研究生刚毕业的年纪,相当于本科毕业工作了2年,总体来说时间耽误的并不算太多,想转行做网络安全工程师,不算太晚! 1、入行前先想透这5点! ① 年纪: 至少到35岁还有接近10年…

作者头像 李华
网站建设 2026/7/14 15:11:03

机器人工件坐标创建与仿真流程及问题反思

实训背景:在RobotStudio机器人仿真软件和工件坐标的创建、RAPID程序加载及仿真实训实训核心掌握大地、工件、用户坐标系之间的区别及如何应用,熟悉工件坐标创建流程,理解程序运行逻辑,仿真问题的解决和总结一、三种坐标的区别、特…

作者头像 李华