判断时间段是否重叠

1、逻辑公式

时间段1:start1(开始时间),end1(结束时间)

时间段2:start2(开始时间),end2(结束时间)

重叠条件为:start1 <= end2 && end1 >= start2。

2、java实现

工具方法

/*** 判断时间是否重叠* true重叠。false不重叠** @param start1* @param end1* @param start2* @param end2* @param isStrict 是否严格遵守不能重叠,例如如果为true 那么8:00-8:30 和8:30-9:00 时间段比较为true* @methodName: isOverlapLocalTime* @return: boolean* @date: 2023/8/10**/
public static boolean isOverlapLocalTime(LocalTime start1, LocalTime end1, LocalTime start2, LocalTime end2, boolean isStrict) {if (start1.isAfter(end1) || start2.isAfter(end2)) {throw new DateTimeException("endDate不能小于startDate");}if (isStrict) {if (start1.compareTo(end2) <= 0 && end1.compareTo(start2) >= 0) {//重叠return true;}//不重叠return false;}if (start1.compareTo(end2) < 0 && end1.compareTo(start2) > 0) {//重叠return true;}//不重叠return false;
}

测试

/*** 判断时间是否重叠** @methodName: isOverlap* @return: void* @date: 2023/8/10**/
@Test
void isOverlapLocalTime() {LocalTime start1 = LocalTime.now();LocalTime end1 = start1.plusHours(2);LocalTime start2 = start1.plusHours(2);LocalTime end2 = start1.plusHours(5);log.info("start1:{},end1:{},start2:{},end2:{}", start1, end1, start2, end2);log.info("isOverlap:{}", DateUtils.isOverlapLocalTime(start1, end1, start2, end2, true));
}

返回结果:true

3、数据库实现

同表sql使用公共方式

SELECT * 
FROM table_name t1, table_name t2 
WHERE t1.id <> t2.id 
AND t1.start_time <= t2.end_time AND t1.end_time >= t2.start_time;

t1.id <> t2.id 用于排除同一行数据的比较。这个语句会将表中的每一行数据与其他行数据进行比较,如果存在重叠的时间段,则返回结果集。

建表

CREATE TABLE `test_date`  (`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,`start_time` datetime NOT NULL,`end_time` datetime NOT NULL,PRIMARY KEY (`id`) USING BTREE,INDEX `idx_start_time`(`start_time` ASC) USING BTREE,INDEX `idx_end_time`(`end_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

添加数据

INSERT INTO `test_date` VALUES (1, '2021-08-05 11:19:01', '2021-08-31 11:19:01');
INSERT INTO `test_date` VALUES (2, '2010-08-27 18:56:13', '2010-09-05 18:56:13');
INSERT INTO `test_date` VALUES (3, '2015-08-08 07:31:37', '2015-09-30 07:31:37');
INSERT INTO `test_date` VALUES (4, '2012-07-16 07:11:41', '2012-07-31 07:11:41');
INSERT INTO `test_date` VALUES (5, '2001-08-21 09:23:11', '2006-11-05 05:28:14');
INSERT INTO `test_date` VALUES (6, '2001-06-07 10:50:32', '2007-12-22 12:45:20');
INSERT INTO `test_date` VALUES (7, '2019-03-29 20:55:14', '2019-04-30 20:55:14');
INSERT INTO `test_date` VALUES (8, '2010-10-21 10:10:27', '2014-07-10 13:18:35');
INSERT INTO `test_date` VALUES (9, '2008-08-12 03:39:36', '2015-09-05 20:17:57');
INSERT INTO `test_date` VALUES (10, '2020-03-24 00:39:22', '2023-10-21 17:26:11');

测试

sql语句:id!=10为排除同一行数据

SELECT* 
FROMtest_date 
WHEREid != 10 AND start_time <= "2023-10-21 17:26:11" AND end_time >= '2020-03-24 00:39:22';

结果如下,存在1条重叠数据

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/31549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity修改单个3D物体的重力的大小该怎么处理呢?

在Unity中修改单个3D物体的重力大小可以通过以下步骤实现&#xff1a; 创建一个新的C#脚本来控制重力&#xff1a; 首先&#xff0c;创建一个新的C#脚本&#xff08;例如&#xff1a;GravityModifier.cs&#xff09;并将其附加到需要修改重力的3D物体上。在脚本中&#xff0c…

SpringBoot整合多数据源

SpringBoot整合多数据源 在实际企业项目开发中&#xff0c;我们经常会在SpringBoot项目中配置多数据源&#xff0c;一方面可以减缓数据库压力&#xff0c;另一方面可以也是业务需求的场景 下面就来看看如何在SpringBoot项目中配置多数据源 POM 在配置多数据源之前&#xff…

reactNative跳转appstore链接报错:Redirection to URL with a scheme that is not HTTP(S)

在reactnative中webview跳转H5下载页面&#xff0c;包错Redirection to URL with a scheme that is not HTTP(S) 在webview中添加一下代码 const onShouldStartLoadWithRequest (event: any) > {const { url } event;console.log(url);if (url.startsWith(https://itune…

7个顶级开源数据集来训练自然语言处理(NLP)和文本模型

推荐&#xff1a;使用 NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 NLP现在是一个令人兴奋的领域&#xff0c;特别是在像AutoNLP这样的用例中&#xff0c;但很难掌握。开始使用NLP的主要问题是缺乏适当的指导和该领域的过度广度。很容易迷失在各种论文和代码中&#xff…

功能测试进阶自动化测试如何摸清学习方向,少走弯路呢?

目录 抛开疑问&#xff0c;只做学术探讨 小白在想什么&#xff1f; 盖楼之前先打好地基&#xff0c;首先需要学习一门语言 语言入门后&#xff0c;正式踏上开始自动化成神之路&#xff0c;入门篇Selenium 玩腻了Selenium 开始接触自动化框架unittest/testNG 不满足于单元…

电脑蓝屏显示恢复怎么办,电脑蓝屏后出现恢复界面怎么回事

电脑蓝屏显示恢复怎么办,电脑蓝屏后出现恢复界面怎么回事 目录 下面是问题描述&#xff08;看看和你遇到的问题一不一样&#xff09; 图片一 图片二 图片三 开始解决问题 步骤 1&#xff1a;耐心等待 步骤 2&#xff1a;重启计算机 步骤 3&#xff1a;进入安全模式 步骤…

【插入排序】直接插入排序 与 希尔排序

目录 1. 排序的概念&#xff1a; 2.插入排序基本思想 3.直接插入排序 4.希尔排序 1. 排序的概念&#xff1a; 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xf…

FlexRay汽车总线静电防护,如何设计保护方案图?

FlexRay是一种高速、实时、可靠、具备故障容错能力的总线技术&#xff0c;是继CAN和LIN总线之后的最新研发成果。FlexRay为线控应用&#xff08;即线控驱动、线控转向、线控制动等&#xff09;提供了容错和时间确定性性能要求。虽然FlexRay将解决当前高端和未来主流车载网络的挑…

vite+vue3项目环境搭建

1.安装 npm init vite 2.输入项目名称 vue3-project 3.选择框架 说明&#xff1a;vue 4.选择类别 说明&#xff1a;JavaScript 5.进入文件夹 cd vue3-project yarn npm run dev 6.打开local

Java通过正则对字符串中的数字补零

在字符串排序时有时会遇到这种情况&#xff1a; 水浒传 第1集.mp4 水浒传 第2集.mp4 … 水浒传 第10集.mp4 水浒传 第11集.mp4 排序时&#xff0c;“水浒传 第10集.mp4”会排在“水浒传 第1集.mp4”前面&#xff0c;排序后的结果变成&#xff1a; 水浒传 第1集.mp4 水浒传 第10…

W5500-EVB-PICO 做TCP Server进行回环测试(六)

前言 上一章我们用W5500-EVB-PICO开发板做TCP 客户端连接服务器进行数据回环测试&#xff0c;那么本章将用开发板做TCP服务器来进行数据回环测试。 TCP是什么&#xff1f;什么是TCP Server&#xff1f;能干什么&#xff1f; TCP (Transmission Control Protocol) 是一种面向连…

Untiy Json和Xml的序列化和反序列化

Json的序列化和反序列化 1.定义数据类 [Serializable] public class ZoomPoint {// 点名称, 将作为Key被字典存储public string name;// 轴心X坐标public Vector2 pivot Vector2.one / 2;// 放大倍率&#xff0c;小于1是为缩小倍率&#xff0c;小于0是取绝对值&#xff0c;不…

空降流量危机?QQ音乐升级架构应对高并发

# 关注并星标腾讯云开发者 # 每周3 | 谈谈我在腾讯的架构设计经验 # 第2期 | 赵威&#xff1a;QQ音乐评论系统如何实现高可用&#xff1f; QQ 音乐自诞生以来&#xff0c;已有多个版本的评论业务系统。最新版本是19年再次全新迭代&#xff0c;基于 tlist 存储&#xff0c;按照发…

外贸路上那些哭笑不得的事情

前几天一个老顾客在软件上联系&#xff0c;说自己上次的订货体验很满意&#xff0c;货物的质量很好&#xff0c;而且服务和回复也很及时&#xff0c; 比起他之前的供货商要好很多&#xff0c;他之前的供货商虽然货物的质量也很好&#xff0c;但是每次询问问题都是要等好久才给…

Fabric系列 - 知识点整理

知识点 源码编译 主机编译 容器编译 手动部署(docker-compose) 单peer 多peer 中途加peer 多主机多peer 链码 语法, 接口 (go版) 命令行调用 ca server 在DApp中使用SDK调用 (js版) 部署的几个阶段 部署1排序和1节点, 1组织1通道 光部署能Dapp 带ca server (每个组织一个)…

【1572. 矩阵对角线元素的和】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&#xff1a; 输入&#xff1a;mat [[1,2,3]…

【ArcGIS Pro二次开发】(59):Editing(编辑)模块

ArcGIS Pro SDK中的"Editing"&#xff08;编辑&#xff09;模块提供了一系列API和工具&#xff0c;允许开发人员在ArcGIS Pro中实现各种地图数据编辑操作&#xff0c;从简单的要素绘制到复杂的数据集编辑。 下面列举一些常用编辑工具的实现方法。 1、获取所选要素的…

Typecho建站:腾讯云轻量应用服务器搭建网站博客方法

腾讯云轻量应用服务器自带Typecho应用模板镜像&#xff0c;腾讯云提供的Typecho模板镜像是基于CentOS 7.6 64位操作系统&#xff0c;并已预置Nginx、PHP、MariaDB软件程序&#xff0c;使用Typecho应用模板可以快速搭建博客、企业官网、电商及论坛等各类网站。腾讯云服务器网分享…

【腾讯云Cloud Studio实战训练营】使用React快速构建点餐H5

文章目录 前言一、Cloud Studio是什么二、Cloud Studio特点三、Cloud Studio使用1.访问官网2.账号注册3.模板选择4.模板初始化5.H5开发安装 antd-mobile安装 Less安装 normalize上传项目需要的素材替换App.js主文件项目启动、展示 6.发布仓库 总结 前言 随着云计算产业的发展&…

uniapp 开发 APP 使用 web-view 引入H5 app与 h5 页面通信

uniapp 可以同时兼容 APP 和 H5&#xff0c;但有时候有些功能在 APP 中实现不了而在 H5 中可以实现&#xff0c;就可以采用 web-view 的方式在 APP 模式下显示 H5 页面。但是 APP 和 H5 储存的参数是不能共享的&#xff0c;例如token&#xff0c;就涉及到 APP 与 H5 之间的参数…