Java日期时间API系列37 您所在的位置:网站首页 SQL计算考勤时间减去请假有交集的时间 Java日期时间API系列37

Java日期时间API系列37

#Java日期时间API系列37| 来源: 网络整理| 查看: 265

     在日程安排或预约排期等场景中,经常会需要对比2个或多个时间段是重叠的功能,我经过整理和验证,发现了下面的算法比较好一些,分享一下。   1.只有2个时间段的情况

 

  例如:存在区间A、区间B,重叠的情况很多,但不重叠的情况只有2种,A在B前或者B在A前。如图:

 

 

得出,不重叠算法:A.end< B.start || A.start > B.end

那么重叠的算法对上面取反就可以了:! (A.end< B.start || A.start > B.end)

 

Java算法实现:! (A.end< B.start || A.start > B.end)   这里为了通用性,将时间类统一通过getTime()方法,转换为时间戳对比。

/** * 判断2个时间段是否有重叠(交集) * @param startDate1 时间段1开始时间戳 * @param endDate1 时间段1结束时间戳 * @param startDate2 时间段2开始时间戳 * @param endDate2 时间段2结束时间戳 * @param isStrict 是否严格重叠,true 严格,没有任何相交或相等;false 不严格,可以首尾相等,比如2021/5/29-2021/5/31和2021/5/31-2021/6/1,不重叠。 * @return 返回是否重叠 */ public static boolean isOverlap(long startDate1, long endDate1, long startDate2, long endDate2, boolean isStrict){ if(endDate1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有