java.util.Calendar在Calendar.add(日期、编号)上返回错误的值

java.util.Calendar在Calendar.add(日期、编号)上返回错误的值,java,date,calendar,Java,Date,Calendar,嗨,我正在尝试获取当前日期减去4的日期 今天当前日期为2014年11月4日星期二16:35:34 我现在做的是 Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, days); System.out.println("new date "+" "+cal.get(cal.YEAR)+" "+cal.get(cal.MONT

嗨,我正在尝试获取当前日期减去4的日期

今天当前日期为2014年11月4日星期二16:35:34

我现在做的是

Date date = new Date();
Calendar cal = Calendar.getInstance();
        cal.setTime(date);

cal.add(Calendar.DATE, days);
System.out.println("new date "+" "+cal.get(cal.YEAR)+" "+cal.get(cal.MONTH)+" "+cal.get(cal.DAY_OF_MONTH));
这是我得到的输出 新日期2014年9月31日(但预计为2014年10月31日)


我不知道出了什么问题。有人能帮我吗?

月历API从0开始。所以一月是0,二月是1,等等


不要这样格式化日期-使用
SimpleDateFormat
。java.util.Calendar中的月份是基于0的…请阅读文档。