(2)roll方法
cal.set(Calendar.YEAR,2006);
cal.set(Calendar.MONTH,8);
cal.set(Calendar.DAY_OF_MONTH,3);
cal.roll(Calendar.DATE,-4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE,4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
2006-09-29
2006-09-03
可见,roll()方法在本月内循环,一般使用add()方法;
6.计算两个任意时间中间的间隔天数
(1)传进Calendar对象
/***//**计算两个时间之间相隔天数
*@paramstartday开始时间
*@paramendday结束时间
*@return
*/
publicintgetIntervalDays(Calendarstartday,Calendarendday)...{
//确保startday在endday之前
if(startday.after(endday))...{
Calendarcal=startday;
startday=endday;
endday=cal;
}
//分别得到两个时间的毫秒数
longsl=startday.getTimeInMillis();
longel=endday.getTimeInMillis();
longei=el-sl;
//根据毫秒数计算间隔天数
return(int)(ei/(1000*60*60*24));
}
(2)传进Date对象
/***//**计算两个时间之间相隔天数
*@paramstartday开始时间
*@paramendday结束时间
*@return
*/
publicintgetIntervalDays(Datestartday,Dateendday)...{
//确保startday在endday之前
if(startday.after(endday))...{
Datecal=startday;
startday=endday;
endday=cal;
}
//分别得到两个时间的毫秒数
longsl=startday.getTime();
longel=endday.getTime();
longei=el-sl;
//根据毫秒数计算间隔天数
return(int)(ei/(1000*60*60*24));
}同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等
注:以上方法是完全按时间计算,有时并不能令人满意,如:
startday="2006-10-1120:00:00"
endday="2006-10-128:00:00"
计算结果为0,但是我们也许相让计算结果变为1,此时可以用如下方法实现: