专业的JAVA编程教程与资源

网站首页 > java教程 正文

没想到YYYY的格式化日期也有坑(yyyy时间格式)

temp10 2024-10-24 17:20:47 java教程 20 ℃ 0 评论

前言

部门发邮件,java日期格式化有坑,有类似的问题赶紧自查,抓紧修复。这个坑挺有意思,看看你有没有遇到过。

正文

提交的代码被老大打回,并邮件告知全部门,原因是日期格式化用法有问题,SimpleDateFormat.可能是从其他地方直接复制的,没检查,用了 YYYY-MM-dd

没想到YYYY的格式化日期也有坑(yyyy时间格式)

我也工作过8年了,一直在北京,算是一名有经验的码农了,实在不应该犯这么低级错误。

由于是在国际化部门,每个国家的时间都可能不一样,后果更要命了!下面我介绍下这个坑。

首先简化逻辑后的代码如下


输出如下:



很明显,使用YYYY时,2021年变成了2022年,在正常情况下可能没问题,但是在跨年的时候大概率就会有问题了。

原因也简单:小写‘y’表示当天所在的年,大写‘Y’代表week in which year,(Week year 意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年)年末的最后一周和年初的第一周可能有”惊喜“了

另外阿里的插件已经可以实时检测这个错误



要修复这个问题很简单,日期、货币等等共用的方法作为组件提供给业务方,这样大家就不会踩这个雷了

总结

  1. 日期格式年统一用yyyy小写。
  2. 封装成统一的工具类,不要直接复制别人的格式

回头一想,如果跨年的时候爆出来,不只我,老大可能都要卷铺盖走人,因为之前写错一个日文的标点符号,都成了twitter热搜。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表