文章目录

  • 前言
  • 一、校验两个时间段是否重合
  • 二、code
    • 2.调用示例
  • 总结

前言


一、校验两个时间段是否重合

二、code

public class DateUtil {/*** 判断两个时间段是否重叠* @param slot1* @param slot2* @return*/public static boolean overlapped(TimeSlot slot1, TimeSlot slot2) {TimeSlot previous, next;previous = slot1.startTime.isBefore(slot2.startTime) ? slot1 : slot2;next = slot2.startTime.isAfter(slot1.startTime) ? slot2 : slot1;// 这里业务需要,允许时间点的重叠// 例如某个时间段的起始时间:2020-06-29 00:00:00// 和另一个时间段的终止时间:2020-06-29 00:00:00// 它们俩可以有交点。如果不需要这种逻辑只把le改成lt// ,ge改成gt就可return !(le(previous, next) || ge(previous, next));}/*** 构造一个时间段* @param startTime* @param endTime* @return*/public static TimeSlot buildSlot(LocalDateTime startTime, LocalDateTime endTime) {return new TimeSlot(startTime, endTime);}/*** less equal* 小于等于* @param prev* @param next* @return*/private static boolean le(TimeSlot prev, TimeSlot next) {return lt(prev, next) || next.endTime.isEqual(prev.startTime);}/*** greater equal* 大于等于* @param prev* @param next* @return*/private static boolean ge(TimeSlot prev, TimeSlot next) {return gt(prev, next) || prev.endTime.isEqual(next.startTime);}/*** greater than* 大于* @param prev* @param next* @return*/private static boolean gt(TimeSlot prev, TimeSlot next) {return prev.endTime.isBefore(next.startTime);}/*** less than* 小于* @param prev* @param next* @return*/private static boolean lt(TimeSlot prev, TimeSlot next) {return next.endTime.isBefore(prev.startTime);}/*** 时间段类*/@Datastatic class TimeSlot{private LocalDateTime startTime;private LocalDateTime endTime;public TimeSlot(LocalDateTime startTime, LocalDateTime endTime) {if (startTime.isAfter(endTime)) {this.startTime = endTime;this.endTime = startTime;} else {this.startTime = startTime;this.endTime = endTime;}}}
}

2.调用示例

LocalDateTime s1 = LocalDateTime.of(2022, 03, 17, 17, 10, 10);LocalDateTime e1 = LocalDateTime.of(2022, 03, 17, 17, 20, 20);LocalDateTime s2 = LocalDateTime.of(2022, 03, 17, 17, 20, 30);LocalDateTime e2 = LocalDateTime.of(2022, 03, 17, 17, 30, 30);boolean overlapped = overlapped(buildSlot(s1, e1),buildSlot(s2, e2));System.out.println("overlapped = " + overlapped);

总结

校验两个时间段是否重合相关推荐

  1. java计算两个时间段的重合天数

    由于我要计算一个合同在当月的分摊的金额,所以就要知道这个合同的有效期在本月有多少天,这就要进行两个时间段重合天数的计算. 两个时间段四个时间点,相当于时间轴上的两条线段(b代表起点,e代表端点,b&l ...

  2. 计算两时间段的重合天/小时/分钟/秒数(末尾附完整代码)

    说明: 有时候我们在计算时间时,有让获取两时间段重合的天数这种需求,小编也是遇到了这样的需求,就封装了一个工具类,希望能帮助到大家. 我们先进行分析 求两个时间段重合的天数,例如求(2022-05-0 ...

  3. java里怎么判断时间重合_java 判断两个时间段是否重叠的案例

    最近业务上遇到需要判断两个时间段是否存在重叠的情况,网上找了不少代码.大佬们的思路过于简洁了,有些理解不了.还只是个菜鸟码农,还是多锻炼锻炼自己的思路. 思路很简单:定义一个时间段的概念,既然是时间段 ...

  4. mysql时间段重叠_MySQL判断两个时间段是否有重合

    两个集合不交叉,只要新插入的条记录的结束时间大于已存在的记录的开始时间并且新插入记录的最小值小于已存在记录的最大值,那么这两个时间段一定存在交叉. 总结起来就一句话:最小值小于最大值并且最大值大于最小 ...

  5. 检查两个时间段是否有时间重叠(允许重叠一部分时间不算重叠)

    /*** 从 hu tool工具复制来改的* 参考 <a href="https://github.com/dromara/hutool/pull/2210">...& ...

  6. java方法,返回两个日期内的所有date集合,根据开始时间、结束时间得到两个时间段内所有的日期...

    在最近的项目中,有这么一个需求,根据开始时间.结束时间得到两个时间段内所有的日期,以下分享我的代码给大家. 1.以下的这个方法适用于jdk1.5以上的版本 /** * 根据开始时间和结束时间返回时间段 ...

  7. 判断两个时间段是否重叠的算法

    判断两个时间段是否重叠,如: startdate1 - enddate1 startdate2 - enddate2 两个时间的重叠分4种情况,若你一一列出这四种情况来判断是否重叠那就弱爆了,最简单的 ...

  8. QT学习笔记之MySql如何计算两个时间段相隔的天数

    写在前面 博主目前正在做毕设,已经快将前台用户预定的部分做完了,但是现在遇到了一个问题,那就是我如何去计算两个时间段之间隔了多少天呢?不然不好按日收费啊!(哦吼吼吼吼!!!) 解决办法 这个不需要我们 ...

  9. python 计算时间重叠_python whilepython计算两个矩形框重合百分比的实例

    如下所示: 对<python计算两个矩形框重合百分比的实例>总结来说,为我们电脑技术很实用. def mat_inter(box1,box2): # 判断两个矩形是否相交 # box=(x ...

最新文章

  1. 基于三维向量对的乱序堆叠物体的位姿识别
  2. python随机生成四位验证码的代码_Python random随机生成6位验证码示例代码
  3. JDBC oracle 错误总结
  4. PHP通过header实现文本文件的下载
  5. 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.4)
  6. 鼠标的计算机基础知识,2、使用鼠标--电脑基础知识
  7. 使用Gitolite搭建Gitserver
  8. react学习(7)----react转换值同render
  9. 视频测试序列的下载地址
  10. R学习-- 数组和矩阵
  11. python3 ocr_python3 ocr 识别图片文字(CSDN验证码90%通过)
  12. 方维团购系统二次开发,项目经验
  13. redis decr 防止超卖_一文搞定Redis高级特性与性能调优
  14. Stack Overflow 2017 开发者调查报告(程序员必看)
  15. 得到常用汉字的拼音首字母
  16. 测试手机端APP时,模拟网速慢的情况
  17. Delphi键盘键值
  18. BTA | 量子链帅初:区块链的开发很漫长,技术突破要有十年心理预期
  19. mysql skip 1062_【20180205】MySQL 1032和1062跳过错误总结
  20. 回收站清空几天可找回?回收站清空的文件怎么恢复?2个方案

热门文章

  1. 专访邓中亮:位置信息是大数据的基石
  2. 恢复Surface Pro 高级电源设置里各类配置项提高外接电源模式下的性能(外接电源莫名很卡,拔掉电源又正常,实则被降频)
  3. 春运火车上的这10种人,有一个就是你!
  4. 怎么用万用表检测场效应管的好坏?
  5. Kali linux渗透测试系列————29、Kali linux 渗透攻击之无线网络攻击
  6. T细胞培养、分离方法大比拼
  7. MSM8998(高通835处理器)外接指纹识别传感器linux驱动如何与设备树进行匹配
  8. uniapp苹果打包白屏 ,安卓没问题,运行也不报错,自定义基座也没问题
  9. 全网多种方法解决未连接到互联网 代理服务器出现问题,或者地址有误的错误
  10. unity 条目换位效果_Unity AI主题博客条目