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
: » 被 YYYY-MM-dd Bug 到的除了你还有腾讯微信!
原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/252166.html