天天看點

yyyy-MM-dd和YYYY-MM-dd不是一樣的嗎?

例子:

public class DateTest {
  public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    
    calendar.set(2019, Calendar.AUGUST, 31);
    
    Date strDate = calendar.getTime();
    
    DateFormat formatUpperCase = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println("2019-08-31 to yyyy-MM-dd: " + formatUpperCase.format(strDate));
    
    formatUpperCase = new SimpleDateFormat("YYYY-MM-dd");
    System.out.println("2019-08-31 to YYYY/MM/dd: " + formatUpperCase.format(strDate));
  }
}      

運作結果為:

2019-8-31 to yyyy-MM-dd: 2019-8-31
2019-8-31 to YYYY/MM/dd: 2019-8-31      

如果改成12月呢?結果是:

2019-12-31 to yyyy-MM-dd: 2019-12-31
2019-12-31 to YYYY-MM-dd: 2020-12-31      

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

yyyy-MM-dd和YYYY-MM-dd不是一樣的嗎?
  • y:year-of-era;正正經經的年;
  • Y:week-based-year;隻要本周跨年,那麼這周就算入下一年;

是以,開發同學還是正正經經用yyyy吧!!!!!!!

繼續閱讀