1. 程式人生 > >實現:判斷日期之間關系(相交,相離,重合),得到相交重合的天數以及計算兩個日期相差的天數

實現:判斷日期之間關系(相交,相離,重合),得到相交重合的天數以及計算兩個日期相差的天數

數值 以及 c++ 日期類 OS 錯誤 表達 單位 有一個

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<bollean表達式>;
// --如果為true程序繼續執行,false則拋出AssertionError,並終止執行
//2.assert<bollean表達式>:<錯誤信息表達式>.
// --如果為true程序繼續執行,false則拋出java.lang.AssertionError,並輸入錯誤信息表達式
assert(star1<end1 && star2<end2);

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;

}


}

實現:判斷日期之間關系(相交,相離,重合),得到相交重合的天數以及計算兩個日期相差的天數