Calendar從星期日開始到星期六爲一個週期,數字表示依次爲:1,2,3……7;MONTH的表示是從數字0開始,所以月份應該是該數字+1。所以我們在使用的時候一定要仔細的閱讀API文檔,避免類似的陷阱。
Calendar cal = Calendar.getInstance();
cal.set(1999, 12, 31); // Year, Month, Day
System.out.print(cal.get(Calendar.YEAR) + " ");
我們所期待程序打印的結果是 1999,可是程序打印的結果卻不是這樣.它將打印出來 2000。在 cal.set(1999, 12, 31)中, 將日曆設置成1999年第13個月的第31天,但是標準日曆中只會有12個月,所以 直接轉換爲下一年.因此我們打印出來的就是2000了。
所以建議日期和星期使用Calendar的定義的常量以避免混淆。