听说用了YYYY-MM-dd的程序员,前些天都在加班改Bug
大叔我北漂十多年,一直没有摇到北京的车牌,每周都需要通过一个APP办理“进京证”,当我办理19年最后一次进京证的时候,APP给出了这样的提示:
日期显示:“2020-12-31”!
车友群里面立马有人不淡定了,虽然大家都猜出来,这应该是APP的Bug,但还是难免要吐槽一下。
那么产生这个Bug的原因是什么呢?其实很简单,就是把yyyy-MM-dd写成了YYYY-MM-dd。
如果对时间处理不那么熟悉的程序员看到这里,会认为yyyy和YYYY有什么区别么?在代码里面敲一下,他们的结果也都是相同的啊!
publicclassDateTest{ publicstaticvoidmain(String[]args){ Calendarcalendar=Calendar.getInstance(); calendar.set(2019,Calendar.AUGUST,31); DatestrDate=calendar.getTime(); DateFormatformatUpperCase=newSimpleDateFormat("yyyy-MM-dd"); System.out.println("2019-08-31toyyyy-MM-dd:"+formatUpperCase.format(strDate)); formatUpperCase=newSimpleDateFormat("YYYY-MM-dd"); System.out.println("2019-08-31toYYYY-MM-dd:"+formatUpperCase.format(strDate)); } }
运行结果为:
2019-08-31toyyyy-MM-dd:2019-08-31
2019-08-31toYYYY-MM-dd:2019-08-31
但是如果我们把日期改成2019-12-31再试试呢?结果产生了差异:
2019-12-31toyyyy-MM-dd:2019-12-31
2019-12-31toYYYY-MM-dd:2020-12-31
那么产生这个问题的原因是什么呢?其实很简单:Y和y实际上代表了不同的含义。
- y:year-of-era;正正经经的年;
- Y:week-based-year;只要本周跨年,那么这周就算入下一年;
这是开发过程中的一个小细节,一不小心就掉到坑里了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。