关于YYYY 与 yyyy

徘徊边缘 提交于 2020-01-07 04:18:44

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

今天线上报了一个很严重的问题,就是在上传服务端数据的时候,2019-12-31 全部上传的 2020-12-31了。 这才发现关于YYYY 与 yyyy的坑。 直接上链接吧。

NSDateFormatter 'YYYY' 和 'yyyy' 的区别

日期格式 YYYY-MM-dd 和 yyyy-MM-dd 有什么区别?

总结就是 两个计算年的方式不一样。有可能会出现对不上。

Also when using a date format string using the correct format is important. @"YYYY" is week-based calendar year. @"yyyy" is ordinary calendar year. A common mistake is to use YYYY. yyyy specifies the calendar year whereas YYYY specifies the year (of “Week of Year”), used in the ISO year-week calendar. In most cases, yyyy and YYYY yield the same number, however they may be different. Typically you should use the calendar year.

具体是什么原因哪?

这是因为Java语言中在特定的时间或者数字等数据上,平时你感觉一切都OK!但是在特定时间、特定环境就会出问题的情况!刚好格式化时间就算其中的一个! 2020年跨年的时候刚好是2019和2020交换的时候,于是就出现了格式化时间的问题,归其原因就是使用了"YYYY-MM-dd"格式化时间! YYYY 是 week-based-year,现在就已经 2020 年了,yyyy 还是 2019 年!

Java圣经表示:

YYYY 表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。 Java自己的BUG,还向圣经一样让人又记又背的!

总结

不论你是否也经历了这样的Bug,希望看到这篇文章之后,对这个细节可以上点心,避免日后因为这个细节而犯错。 开发中还是用yyyy-MM-dd来做日期格式化,其它的就不要用了!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!