例子:
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 實際上代表了不同的含義。

- y:year-of-era;正正經經的年;
- Y:week-based-year;隻要本周跨年,那麼這周就算入下一年;
是以,開發同學還是正正經經用yyyy吧!!!!!!!