一、问题:
1)计算两个时间相差多少天
如: 2014-05-06 21:00 至 2014-05-07 23:00 为 一天 ( 超过24小时 )
2)计算两个时间间隔多少天
如: 2014-05-06 21:00 至 2014-05-07 00:01 为 一天 (过 24:00 )
二、代码示例
package Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalculateDate {
/**
* 计算两个时间相差多少天,两个时间 间隔 n * 24 个小时
*
* @param time1
* @param time2
* @return
*/
public static int daysBetween(long time1, long time2) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time1);
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Calendar cal2 = Calendar.getInstance();
cal2.setTimeInMillis(time2);
cal2.set(Calendar.HOUR, 0);
cal2.set(Calendar.MINUTE, 0);
cal2.set(Calendar.SECOND, 0);
cal2.set(Calendar.MILLISECOND, 0);
long between_days = (cal2.getTimeInMillis() - cal.getTimeInMillis()) / (1000 * 3600 * 24);
int betweenDays = Math.abs(Integer.parseInt(String.valueOf(between_days)));
System.out.println("daysBetween:"+betweenDays);
return betweenDays ;
}
/**
* 计算两个日期间隔,过 24:00 为一天
*
* @param lateTime
* @param earlierTime
* @return
*/
public static int intervalBetweenDay(long lateTime , long earlierTime){
Calendar lateCalendar = Calendar.getInstance(); // 较晚时间,20140203
Date lateDate = new Date(lateTime);
lateCalendar.setTime(lateDate);
Calendar earlierCalendar = Calendar.getInstance(); // 较早时间 20140201
Date earlierDate = new Date(earlierTime);
earlierCalendar.setTime(earlierDate);
// 保证第二个时间一定大于第一个时间
if (earlierCalendar.after(lateCalendar)) {
earlierCalendar = lateCalendar;
lateCalendar.setTime(earlierDate);
}
int betweenYears = lateCalendar.get(Calendar.YEAR) - earlierCalendar.get(Calendar.YEAR);
int betweenDays = lateCalendar.get(Calendar.DAY_OF_YEAR) - earlierCalendar.get(Calendar.DAY_OF_YEAR);
for (int i = 0; i < betweenYears; i++) {
earlierCalendar.set(Calendar.YEAR, (earlierCalendar.get(Calendar.YEAR) + 1));
betweenDays += earlierCalendar.getMaximum(Calendar.DAY_OF_YEAR);
}
System.out.println("intervalBetweenDay:" + betweenDays);
return betweenDays ;
}
public static void main(String args[]) {
long curTime = System.currentTimeMillis();
long otherTime = System.currentTimeMillis() + 86400000L*2 ; // 1天=86400000 毫秒,2天
int betweenDays = daysBetween(curTime, otherTime);
System.out.println("两个时间相差天数:" + betweenDays);
int intervalBetweenDay =intervalBetweenDay(otherTime,curTime );
System.out.println("两个日期间隔天数:" + intervalBetweenDay);
/*
输出结果:
daysBetween:2
两个时间相差天数:2
intervalBetweenDay:2
两个日期间隔天数:2
*/
}
}