问题代码: 

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定义的常量以避免混淆。

 
正确代码: 
Calendar cal = Calendar.getInstance(); cal.set(1999, Calendar.DECEMBER, 31); // Year, Month, Day                

 System.out.print(cal.get(Calendar.YEAR) + " ");