Java 为什么日期自动加1个月?

Java 为什么日期自动加1个月?,java,date,calendar,Java,Date,Calendar,基本上,我希望我的结果是我预期的2012-10-23版。然而,它是非常有线的。 这是我的密码: 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(

基本上,我希望我的结果是我预期的2012-10-23版。然而,它是非常有线的。 这是我的密码:

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个月吗?谢谢。

日历课程月份从0开始,而不是从1开始,因此当将月份设置为10时,您不是将10月设置为11月

将代码更改为

cal.set(2012, 9, 22);
甚至更好

cal.set(2012, Calendar.OCTOBER, 22);
更多信息:


欢迎使用Java日期和日历API。避免使用幻数。改为使用日历常量。