实现:判断日期之间关系(相交,相离,重合),得到相交重合的天数以及计算两个日期相差的天数

Posted 茶尚温.听风吟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现:判断日期之间关系(相交,相离,重合),得到相交重合的天数以及计算两个日期相差的天数相关的知识,希望对你有一定的参考价值。

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;

}


}

以上是关于实现:判断日期之间关系(相交,相离,重合),得到相交重合的天数以及计算两个日期相差的天数的主要内容,如果未能解决你的问题,请参考以下文章

使用Python判断线段是不是与矩形相交

UVA10256 The Great Divide

第八届福建省大学生程序设计竞赛-重现赛

js 怎么求两个日期相差几个月零几天?

UESTC1713 无关青云路,无关诗书,无你处,无江湖

高一数学韦恩图怎么画?