与java中当前日期的日期差异

Jay*_*aik 1 java

我正在开发JAVA swing中的应用程序,因为我想要与当前日期的日期差异,就像今天16/04/2013那样它应该返回15/04/2013.我试过以下代码:

Calendar cal = new GregorianCalendar();
Calendar cal2 = new GregorianCalendar();
cal.roll(Calendar.DAY_OF_YEAR, -1);
//if within the first 30 days, need to roll the year as well
if(cal.after(cal2)){
     cal.roll(Calendar.YEAR, -1);
}
System.out.println("Year " + cal.get(Calendar.YEAR));
System.out.println("Month " + cal.get(Calendar.MONTH));
System.out.println("Day " + cal.get(Calendar.DAY_OF_MONTH));
Run Code Online (Sandbox Code Playgroud)

在这段代码中我期待得到一天的回复日期.但相反,我得到了一个月的约会.防爆.如果今天是16/04/2013,预期的产量是15/04/2013,但我得到15/03/2013(一天一个月回来)作为输出.

Evg*_*eev 5

你不需要任何手动操作,Calendar会自动完成所有必要的日期算术,只需这样做

    Calendar cal = new GregorianCalendar();
    cal.add(Calendar.DATE, -1);
Run Code Online (Sandbox Code Playgroud)

请注意,日历中的月份从0开始,因此4月份为3