当前位置: 首页 > news >正文

判断时间范围是否重叠(原理)

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

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

第一种情况: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

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

相关文章:

  • RS笔记:深度推荐模型之WideDeep [2016.6 谷歌]
  • Shell脚本函数简介及运用
  • Java并发 | 16.[基础] synchronized简述
  • 一体化伺服电机在新能源汽车充电设备中的应用
  • Java并发 | 15.[基础] 线程安全分析
  • 【web-攻击应用程序框架】(12.1)分层架构:攻击与保障
  • java计算机毕业设计技术交流网站源码+数据库+系统+lw文档+mybatis+运行部署
  • iPhone没有收到iOS16最新版的推送,如何升级系统?
  • 人工神经网络算法的应用,人工神经网络算法步骤
  • 极智Paper | YOLOv7 更高 更快 更强
  • 大型在线考试答题系统源码 B/S架构
  • Uniswap 顶流之路:机制、决策与风险分析
  • Human-level control through deep reinforcement learning
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • 罗氏线圈在有源滤波中的应用
  • JavaScript-如何实现克隆(clone)函数
  • Debian下无root权限使用Python访问Oracle
  • IP路由与转发
  • jquery ajax学习笔记
  • Median of Two Sorted Arrays
  • node学习系列之简单文件上传
  • ReactNative开发常用的三方模块
  • Redux 中间件分析
  • Web Storage相关
  • windows下mongoDB的环境配置
  • 大型网站性能监测、分析与优化常见问题QA
  • 坑!为什么View.startAnimation不起作用?
  • 前端设计模式
  • 我从编程教室毕业
  • 一些关于Rust在2019年的思考
  • 怎么把视频里的音乐提取出来
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • linux 淘宝开源监控工具tsar
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​Python 3 新特性:类型注解
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ###C语言程序设计-----C语言学习(6)#
  • (2)STM32单片机上位机
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)Linux——Linux常用指令
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)大型网站的系统架构
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .gitattributes 文件
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET 常见的偏门问题
  • .NET 服务 ServiceController
  • .NET建议使用的大小写命名原则
  • .NET中的十进制浮点类型,徐汇区网站设计
  • ??javascript里的变量问题
  • @SentinelResource详解