码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-03-31 23:07:34      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:rda   计算   assert   lan   class   buffer   body   表示   error   

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;

}


}

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

标签:rda   计算   assert   lan   class   buffer   body   表示   error   

原文地址:https://www.cnblogs.com/xiaweicn/p/8684428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!