转自:http://hi.baidu.com/oritenson/blog/item/bc595d5ae2ff38302934f000.html#0
Java 计算两个日期之间相差的天数(包括跨年情况)
计算的方法较多,我这里采用的是Calendar来实现计算两个Date之间相差几天。
非跨年情况:
/**
* This method is used to get interval days of exitDateFrom and exitDateTo
*/
private static int getIntervalDaysOfExitDate(Date exitDateFrom, Date exitDateTo){
Calendar cal = Calendar.getInstance();
cal.setTime(exitDateFrom);
int dayFrom = cal.get(Calendar.DAY_OF_YEAR);
cal.setTime(exitDateTo);
int dayTo = cal.get(Calendar.DAY_OF_YEAR);
return dayTo - dayFrom;
}
这个是我第一次写的方法,利用Calendar的DAY_OF_YEAR属性求两个DAY之间的天数,对于同一年的两个日期是管用的,但是当你输入非同年的日期时就会出现错误结果。下面为正确方法,对于所有情况都适用。
跨年情况:
/**
* This method is used to get interval days of exitDateFrom and exitDateTo
*/
private static int getIntervalDaysOfExitDate2(Date exitDateFrom, Date exitDateTo){
Calendar aCalendar = Calendar.getInstance();
Calendar bCalendar = Calendar.getInstance();
aCalendar.setTime(exitDateFrom);
bCalendar.setTime(exitDateTo);
int days = 0;
while(aCalendar.before(bCalendar)){
days++;
aCalendar.add(Calendar.DAY_OF_YEAR, 1);
}
return days;
}
====================================================
另外一种方式:
public static int compareDate(String time1, String time2)
throws ParseException {
DateFormat dateFormat = DateFormat.getDateInstance();
Date date1 = dateFormat.parse(time1);
Date date2 = dateFormat.parse(time2);
long quot;
quot = date1.getTime() - date2.getTime();
quot = quot / 1000 / 60 / 60 / 24;
int day = new Long(quot).intValue();
return day;
}