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


    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;

    }


    }

  • 相关阅读:
    父级div height:auto无效解决办法
    梦幻西游摇钱树苗怎么种
    检测QQ是否在线或启用
    ASP.NET MVC3 Model验证总结 @Html.ValidationSummary(true)
    cookie与session用法
    《梦幻西游》手游人宠抗防修炼点修消耗表
    Windows 8/8.1 Key_Windows 8.1|Windows 8|Windows 7|Windows Vista|Office 2013|Office 2010|Win Server 2012|Win Server 2008|Vista|各版
    My97DatePicker控件显示时分秒
    jQuery日期选择插件WdatePicker使用方法.日期范围限制
    DropDownList赋值,绑定,传值
  • 原文地址:https://www.cnblogs.com/xiaweicn/p/8684428.html
Copyright © 2020-2023  润新知