本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
Ctrl + C 和 Ctrl + V 使用惯了,Bug 都一样,翻车也一起翻!
这两天,相信不少公司都被 YYYY-MM-dd 的时间格式化方式坑到了。其中包括,小米,微信等互联网一线大型公司。
微信赞赏里面直接出现了 2020 年 12 月 29 号。同样的小米小爱音响年份显示全炸成 2020/12/29。
经过排查,发现我们公司也有多个项目出现了超预期日期的 Bug。而且是多个生产环境,我当场被 Boss 照顾!
出现这个问题的原因,其实很简单。就是在格式化日期的时候,把 yyyy-MM-dd 中,原本应该小写的年份给大写成了 YYYY-MM-dd。
出现这个问题后,我连忙问了 3 个同事,没有一个知道大写 YYYY 和小写 yyyy 在格式化时间时有什么区别?
这是一种 Ctrl C 和 Ctrl V 的悲哀。
YYYY 表示是 week-based-year,表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。所以 2019 年 12 月 29 日那天在 YYYY 的格式化下就变成了 2020 年了。
针对 YYYY 的英文解释:In contrast, YYYY denotes what’s known as the week-based year, something that accountants rely on to avoid splitting weeks – and thus the company payroll – between two different years.
参考资料
- https://nakedsecurity.sophos.com/2019/12/23/serious-security-the-decade-ending-y2k-bug-that-wasnt/
- http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » 被 YYYY-MM-dd Bug 到的除了你还有腾讯微信!