YYYY-MM-dd和yyyy-MM-dd的区别

珠江路在线   2020年1月15日  【 转载 】龍之逆鳞 编辑:


YYYY-MM-dd和yyyy-MM-dd的区别

日期显示:“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-312019-08-31toYYYY/MM/dd:2019-08-31

然而假如我们把日期改成 2019-12-31 再试试呢? 后果产生了差别:

2019-12-31toyyyy-MM-dd:2019-12-312019-12-31toYYYY-MM-dd:2020-12-31

那么产生这个问题的缘由是什么呢?其实很 容易:Y 和 y 实际上代表了不同的 含意 。

YYYY-MM-dd和yyyy-MM-dd的区别

  • y:year-of-era;正正经经的年;
  • Y:week-based-year; 只有本周跨年,那么这周就算入下一年;也便是 12 月

这是开发过程中的一个小细节,一不小心就掉到坑里了 。