YYYY-MM-dd和yyyy-MM-dd的區別


YYYY-MM-dd和yyyy-MM-dd的區別

日期顯示:“2020-12-31”!

車友群裡面立馬有人不淡定了,雖然大家都猜出來,這應該是 APP 的 Bug,但還是難免要吐槽一下,討論到最後,就快要“殺個程序員祭天了”!

那麼產生這個 Bug 的原因是什麼呢?

其實很簡單,就是 把 yyyy-MM-dd 寫成了 YYYY-MM-dd 。

如果對時間處理不那麼熟悉的程序員看到這裡,會認為 yyyy 和 YYYY 有什麼區別麼?在代碼裡面敲一下,他們的結果也都是相同的啊!

<code>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));
}
}
/<code>

運行結果為:

<code>2019-08-31toyyyy-MM-dd:2019-08-31
2019-08-31toYYYY/MM/dd:2019-08-31
/<code>

但是如果我們把日期改成 2019-12-31 再試試呢?結果產生了差異:

<code>2019-12-31toyyyy-MM-dd:2019-12-31
2019-12-31toYYYY-MM-dd:2020-12-31
/<code>

那麼產生這個問題的原因是什麼呢?其實很簡單:Y 和 y 實際上代表了不同的含義。

YYYY-MM-dd和yyyy-MM-dd的區別

  • y:year-of-era;正正經經的年;
  • Y:week-based-year;只要本週跨年,那麼這周就算入下一年;也就是 12 月

這是開發過程中的一個小細節,一不小心就掉到坑裡了。


分享到:


相關文章: