2013-08-24 67 views
0

基本上,我希望我的結果是我期望的打印2012-10-23。但是,它非常有線。 這裏是我的代碼:爲什麼日期自動添加1個月?

SimpleDateFormat ft = new SimpleDateFormat("YYYY-MM-dd"); 

Calendar cal = Calendar.getInstance(); 
cal.set(2012, 10, 22); 
cal.add(Calendar.DATE, 1); 
Date startDate = new Date(); 

startDate = cal.getTime(); 

String date = ft.format(startDate).toString(); 
System.out.println(date); 

我想打印2012年10月23日,但結果是2012年11月23日。

有人能告訴我爲什麼自動增加1個月嗎?謝謝。

+2

歡迎JAV的不一致地獄日期和日曆API。 –

+1

避免使用「魔術」號碼。改用日曆常量。 –

回答

9

Calendar上課月份從0開始,而不是從1開始,所以在將月份設置爲10時,您不會設置10月份,而是11月份。

更改您的代碼

cal.set(2012, 9, 22); 

甚至更​​好

cal.set(2012, Calendar.OCTOBER, 22); 

更多信息: