首先问题来源:因为业务需求需要在前端设置一个时间范围,并且可以多次增加,但要保证时间范围不重叠。某一个时间范围内做特定的事情。

让我们来分析一下时间重叠有几种情况

第一种情况:R1的开始时间在R2时间范围内

图①

第二种情况:R1的结束时间在R2的时间范围内

图②

第三种情况:R1在R2内,或者R2在R1内

图③

了解这三种情况后,我们可以分析出分析出:一个时间范围的与另一个时间范围的进行比较,S代表开始的边,E代表结束的边。

第一种情况

R1_S >= R2_S && R1_S  <=  R2_E

第二种情况

R1_E  >=  R2_S && R1_E <= R2_E

结合一下就可以解决上面的两种情况  R1_S >= R2_S && R1_S  <=  R2_E || R1_E  >=  R2_S && R1_E <= R2_E  当条件成立则证明时间范围相互重叠。

第三种情况

第三种图可能刚开始看比较迷糊,两个包含的关系,但是我们再换种角度来看,R1在R2上移动的话是不是就是图三下面的样子?

没错!实际我们在上面就已经解决了这种情况。但是图③的上图我们还未解决,同理:R2在R1上移动。我们只需要判断R2的两个边界是否在R1块内。

R2_S >= R1_S && R2_S <= R1_E || R2_E >= R1_S && R2_E <= R1_E

我们将三种情况全部结合最终为

R1_S >= R2_S && R1_S  <=  R2_E || R1_E  >=  R2_S && R1_E <= R2_E || R2_S >= R1_S && R2_S <= R1_E || R2_E >= R1_S && R2_E <= R1_E

如果对您有帮助,能否给我一个赞呢?!

判断时间范围是否重叠(原理)相关推荐

  1. 【C++OJ_静态与友元】判断矩形是否重叠(复合类+友元)

    [C++OJ_静态与友元]判断矩形是否重叠(复合类+友元) 题目描述 用CPoint表示点,用两个CPoint对象表示矩形类CRect的对角线两点.分别实现CPoint类和CRect类,并在主函数用输 ...

  2. Canvas判断线段是否重叠

    比如我们,想画一个完整的闭合的矩形,那我们就不能让线段进行重叠 那线段重叠了,判断的方法呢 canvas.onmouseup = function (e) {e = e || window.event ...

  3. 微型计算机原理求怎样判断数补码,微机原理及应用第一章习题答案

    "微型计算机原理及应用"第一章习题解答 1.写出下列原码机器数的真值:若分别作为反码和补码时,其表示的真值又分别是多少? (1) (0110 1110)二进制原码=(+110 11 ...

  4. IoU 判断矩形区域重叠

    重叠度(IOU): IOU定义了两个bounding box的重叠度,如下图所示: 计算IoU A = [x1, y1, x2, y2],B = [x1, y1, x2, y2] iw = min(A ...

  5. 如何消除文法二义性、如何判断二义文法—编译原理

    系列文章戳这里

  6. sql判断时间段是否重叠

    话不多说,直接上SQL: SELECT * FROM `USER` WHERE  ( `start_time` > $startTime AND `start_time` < $endTi ...

  7. 详解JavaScript变量类型判断及domReady原理 写得很好

    原文:详解JavaScript变量类型判断及domReady原理 我们知道,在开发JavaScript时候,经常要判断JavaScript变量类型,此 JavaScript教程 详细介绍JS变量的判断 ...

  8. 使用order by排序判断返回结果的列数,order by排序判断字段数原理详解

    「作者主页」:士别三日wyx order by排序猜解列数原理详解 一.order by的两种使用方式 1)按照字段名排序 2)按照索引排序 二.order by怎么判断字段数? 1)正常的排序 3) ...

  9. js 判断平面几何图形是否重叠

    1. 点线面数据格式 点: { x: xxx, y: xxx } 线: [{ x: xxx, y: xxx }, { x: xxx, y: xxx }] 面: [{ x: xxx, y: xxx }, ...

最新文章

  1. Spring Job?Quartz?XXL-Job?年轻人才做选择,艿艿全莽~
  2. springboot接入cas单点登录后跳转不到我需要跳转到页面_单点认证的一点心得
  3. SpringMVC+MyBatis整合——事务管理
  4. 计算机环境变量win10,Win10系统path环境变量怎么设置
  5. logo免费设计app有哪些?好用的logo设计app分享
  6. Google DFP广告管理系统简介:开始与您的网站进行广告集成
  7. get busy trying or get busy dying
  8. 【经验总结】小白挖洞十天经验分享
  9. 特征频率、最y大振荡频率、截止频率有什么关系和异同
  10. [转]2014年最新810多套android源码2.46GB免费一次性打包下载
  11. assign和weak的区别
  12. Linux服务器连接校园网
  13. 什么是SWFObject,如何使用!
  14. 图模型在反欺诈中的应用
  15. TreeView添加treeView1_NodeMouseClick----多么痛的领悟。。。
  16. 解码百度核心:移动的无色墙,AI的无形剑
  17. html5 游戏广告 sdk,帷千动媒SDK 3.0发布 基于HTML5富媒体广告
  18. 04. Python-条件、循环和其他语句
  19. uniapp打包成h5页面
  20. pomelo php,php向pomelo发请求,请求发送系统广播问题。

热门文章

  1. 假如我是超级内卷王......
  2. Spring参考文档翻译11--IOC容器09
  3. html制作产品展示动画,制作介绍某种产品的动画
  4. 卓克-极限:硬盘装满电影会变重吗?
  5. 微软surface book 3没有wifi怎么解决
  6. Windows 安装 TkInter
  7. 原生RedHat OpenStack搭建
  8. 根据excel背景色进行筛选
  9. 政务采购代理业务流程
  10. 十进制小数化为二进制小数的方法是什么_二进制和十进制之间的互相转换