实现:判断日期之间关系(相交,相离,重合),得到相交重合的天数以及计算两个日期相差的天数
package com.xiawei.repeatdays;
import java.util.Date;
/**
 * 判断日期之间关系(相交,相离,重合),得到相交重合的天数
 *
 */
public class RepeatDays {
	
	/**
	 * 将两个日期相减的结果以字符串秒的格式返回
	 */
	public static String getDayDifference(Date d1 , Date d2){
		StringBuffer ds = new StringBuffer();
		long days = ((d1.getTime() - d2.getTime())/1000)/(3600*24);
		if(days >= 0){
			ds.append(days);
		}
		return ds.toString();
		
	}
	/**
	 * 计算两个日期区间重合的天数
	 * @param startDate1 第一个开始日期
	 * @param endDate1 第一个结束日期
	 * @param startDate2 第二个开始日期
	 * @param endDate2 第二个结束日期
	 * @return 日期区间重合的天数
	 */
	public static int getRepeatDays(Date startDate1,Date endDate1,Date startDate2,Date endDate2){
		//将日期类型转换为数值以秒为单位
		long star1 = startDate1.getTime();
		long end1 = endDate1.getTime();
		long star2 = startDate2.getTime();
		long end2 = endDate2.getTime();
		String coincidenceday;
		//这里有一个小知识点,就是assert关键字.他在C++也有,表示断言.java在执行的时候是不开启断言检查的
		//它有两种用法:
		//1.assert
		//	--如果为true程序继续执行,false则抛出AssertionError,并终止执行
		//2.assert
		//	--如果为true程序继续执行,false则抛出java.lang.AssertionError,并输入错误信息表达式
		assert(star1
		if(star1<=star2 && end1 >= end2){
			
			coincidenceday = getDayDifference(endDate2,startDate2);
		}else if(star1>=star2 && end1 <= end2){
			
			coincidenceday = getDayDifference(endDate1,startDate1);
		}else if(star1>=star2 && star1<=end2 && end2 <= end1){
			
			coincidenceday = getDayDifference(endDate2,startDate1);
		}else if(star1 <= star2 && end1 <= end2 && end1 >= star2){
			
			coincidenceday = getDayDifference(endDate1,startDate2);
		}else if(end1 <= star2 && star1 >= end2){
			
			coincidenceday = "0";		
		}else {
			
			coincidenceday = "0";
		}
		
		//
		int numberDays = Integer.parseInt(coincidenceday);
		
		return numberDays;
		
	}
	
	/**
	 * 计算两个日期间相隔的天数
	 * @param endDate 结束日期
	 * @param startDate 开始日期
	 * @return 两个日期间相隔的天数
	 */
	public static int getRepeatDaysTwo(Date endDate,Date startDate){
		long star = startDate.getTime();
		long end = endDate.getTime();
		
		if(end < star){
			System.err.println("请用较晚的日期减去较早的日期!");
		}else{
			String coincidenceday = getDayDifference(endDate,startDate);
			int numberDays = Integer.parseInt(coincidenceday);
			//返回天数
			return numberDays;
		}
		return 0;
		
	}
	
	
}