2个日期,天数相隔多少,日期有多少天
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
/**
* 两日期之间的间隔
* @param beginDate 开始时间
* @param endDate 结束时间
* @return 返回day
*/
public static int getDistanceByDay(Date beginDate,Date endDate ) {
Calendar beginCalendar = Calendar.getInstance();
beginCalendar.setTime(beginDate);
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(endDate);
long beginTime=beginCalendar.getTimeInMillis();
long endTime=endCalendar.getTimeInMillis();
//先算出两时间的毫秒数之差大于一天的天数
int betweenDays = (int)((endTime - beginTime) / (1000 * 60 * 60 *24));
//使endCalendar减去这些天数,将问题转换为两时间的毫秒数之差不足一天的情况
endCalendar.add(Calendar.DAY_OF_MONTH, -betweenDays);
//再使endCalendar减去1天
endCalendar.add(Calendar.DAY_OF_MONTH, -1);
//比较两日期的DAY_OF_MONTH是否相等
if(beginCalendar.get(Calendar.DAY_OF_MONTH)==endCalendar.get(Calendar.DAY_OF_MONTH)){
return betweenDays + 1; //相等说明确实跨天了
} else{
return betweenDays; //不相等说明确实未跨天
}
}
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE,32);
System.out.println(getDistanceByDay(new Date(),calendar.getTime()));
}
}
也可以在MySql使用函数TimeStampdiff,获得日期差
SELECT id,user_name,TIMESTAMPDIFF(DAY,CURDATE(),expireDate) FROM t_user