判断时间范围是否重叠(原理)
首先问题来源:因为业务需求需要在前端设置一个时间范围,并且可以多次增加,但要保证时间范围不重叠。某一个时间范围内做特定的事情。
让我们来分析一下时间重叠有几种情况
第一种情况: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
如果对您有帮助,能否给我一个赞呢?!
判断时间范围是否重叠(原理)相关推荐
- 【C++OJ_静态与友元】判断矩形是否重叠(复合类+友元)
[C++OJ_静态与友元]判断矩形是否重叠(复合类+友元) 题目描述 用CPoint表示点,用两个CPoint对象表示矩形类CRect的对角线两点.分别实现CPoint类和CRect类,并在主函数用输 ...
- Canvas判断线段是否重叠
比如我们,想画一个完整的闭合的矩形,那我们就不能让线段进行重叠 那线段重叠了,判断的方法呢 canvas.onmouseup = function (e) {e = e || window.event ...
- 微型计算机原理求怎样判断数补码,微机原理及应用第一章习题答案
"微型计算机原理及应用"第一章习题解答 1.写出下列原码机器数的真值:若分别作为反码和补码时,其表示的真值又分别是多少? (1) (0110 1110)二进制原码=(+110 11 ...
- IoU 判断矩形区域重叠
重叠度(IOU): IOU定义了两个bounding box的重叠度,如下图所示: 计算IoU A = [x1, y1, x2, y2],B = [x1, y1, x2, y2] iw = min(A ...
- 如何消除文法二义性、如何判断二义文法—编译原理
系列文章戳这里
- sql判断时间段是否重叠
话不多说,直接上SQL: SELECT * FROM `USER` WHERE ( `start_time` > $startTime AND `start_time` < $endTi ...
- 详解JavaScript变量类型判断及domReady原理 写得很好
原文:详解JavaScript变量类型判断及domReady原理 我们知道,在开发JavaScript时候,经常要判断JavaScript变量类型,此 JavaScript教程 详细介绍JS变量的判断 ...
- 使用order by排序判断返回结果的列数,order by排序判断字段数原理详解
「作者主页」:士别三日wyx order by排序猜解列数原理详解 一.order by的两种使用方式 1)按照字段名排序 2)按照索引排序 二.order by怎么判断字段数? 1)正常的排序 3) ...
- js 判断平面几何图形是否重叠
1. 点线面数据格式 点: { x: xxx, y: xxx } 线: [{ x: xxx, y: xxx }, { x: xxx, y: xxx }] 面: [{ x: xxx, y: xxx }, ...
最新文章
- Spring Job?Quartz?XXL-Job?年轻人才做选择,艿艿全莽~
- springboot接入cas单点登录后跳转不到我需要跳转到页面_单点认证的一点心得
- SpringMVC+MyBatis整合——事务管理
- 计算机环境变量win10,Win10系统path环境变量怎么设置
- logo免费设计app有哪些?好用的logo设计app分享
- Google DFP广告管理系统简介:开始与您的网站进行广告集成
- get busy trying or get busy dying
- 【经验总结】小白挖洞十天经验分享
- 特征频率、最y大振荡频率、截止频率有什么关系和异同
- [转]2014年最新810多套android源码2.46GB免费一次性打包下载
- assign和weak的区别
- Linux服务器连接校园网
- 什么是SWFObject,如何使用!
- 图模型在反欺诈中的应用
- TreeView添加treeView1_NodeMouseClick----多么痛的领悟。。。
- 解码百度核心:移动的无色墙,AI的无形剑
- html5 游戏广告 sdk,帷千动媒SDK 3.0发布 基于HTML5富媒体广告
- 04. Python-条件、循环和其他语句
- uniapp打包成h5页面
- pomelo php,php向pomelo发请求,请求发送系统广播问题。