Java给定两组起止日期,求交集
/**
* 判断2个时间段是否有重叠(交集)
* @param startDate1 时间段1开始时间戳
* @param endDate1 时间段1结束时间戳
* @param startDate2 时间段2开始时间戳
* @param endDate2 时间段2结束时间戳
* @param isStrict 是否严格重叠,true 严格,没有任何相交或相等;false 不严格,可以首尾相等,比如2021/5/29-2021/5/31和2021/5/31-2021/6/1,不重叠。
* @return HashMap<String,DateTime> key startDate endDate
* 思路:将有交集的情况列出,若不符合有交集的情况,则无交集
* 有交集的情况
* 1.第一个时间段的开始时间在第二个时间段的开始时间和结束时间当中 第一个时间段的结束时间大于第二个时间段的结束时间
* 2.第一个时间段的结束时间在第二个时间段的开始时间和结束时间当中 第一个时间段的开始时间小于第二个时间段的开始时间
* 3.第一个时间段的开始结束时间在第二个时间段的开始时间和结束时间当中
* 3.第二个时间段的开始结束时间在第一个时间段的开始时间和结束时间当中
* 判断两个时间段是否有交集
*/
public static HashMap<String,DateTime> setOverlap(DateTime startDate1, DateTime endDate1, DateTime startDate2, DateTime endDate2, boolean isStrict){
HashMap<String,DateTime> intersection = new HashMap<>();
if(endDate1.compareTo(startDate1) < 0){
throw new XbootException("endDate1不能小于startDate1");
}
if(endDate2.compareTo(startDate2) < 0){
throw new XbootException("endDate2不能小于startDate2");
}
if(isStrict){
if(startDate1.compareTo(startDate2) >= 0 && startDate1.compareTo(endDate2) <= 0 && endDate1.compareTo(endDate2) > 0){
intersection.put("startDate",startDate1);
intersection.put("endDate",endDate2);
}else if(endDate1.compareTo(startDate2) >= 0 && startDate1.compareTo(endDate2) <= 0 && startDate1.compareTo(startDate2) < 0){
intersection.put("startDate",endDate1);
intersection.put("endDate",endDate2);
}else if(startDate1.compareTo(startDate2) >= 0 && endDate1.compareTo(endDate2) <= 0){
intersection.put("startDate",startDate1);
intersection.put("endDate",endDate1);
}else if((startDate1.compareTo(startDate2) <= 0 && endDate1.compareTo(endDate2) >= 0) ){
intersection.put("startDate",startDate2);
intersection.put("endDate",endDate2);
}
}else{
if(startDate1.compareTo(startDate2) > 0 && startDate1.compareTo(endDate2) < 0 && endDate1.compareTo(endDate2) > 0){
intersection.put("startDate",startDate1);
intersection.put("endDate",endDate2);
}else if(endDate1.compareTo(startDate2) > 0 && startDate1.compareTo(endDate2) < 0 && startDate1.compareTo(startDate2) < 0){
intersection.put("startDate",endDate1);
intersection.put("endDate",endDate2);
}else if(startDate1.compareTo(startDate2) > 0 && endDate1.compareTo(endDate2) < 0){
intersection.put("startDate",startDate1);
intersection.put("endDate",endDate1);
}else if((startDate1.compareTo(startDate2) < 0 && endDate1.compareTo(endDate2) > 0) ){
intersection.put("startDate",startDate2);
intersection.put("endDate",endDate2);
}
}
return intersection;
}
public static HashMap<String,DateTime> getOverlap(DateTime startDate1, DateTime endDate1, DateTime startDate2, DateTime endDate2, boolean isStrict){
Objects.requireNonNull(startDate1, "startDate1");
Objects.requireNonNull(endDate1, "endDate1");
Objects.requireNonNull(startDate2, "startDate2");
Objects.requireNonNull(endDate2, "endDate2");
return setOverlap(startDate1, endDate1, startDate2, endDate2, isStrict);
}
相关文章:
Java给定两组起止日期,求交集
/*** 判断2个时间段是否有重叠(交集)* param startDate1 时间段1开始时间戳* param endDate1 时间段1结束时间戳* param startDate2 时间段2开始时间戳* param endDate2 时间段2结束时间戳* param isStrict 是否严格重叠,true 严格࿰…...
数组的复制与二维数组的用法
今天学习的主要内容有 数组的复制 数组的复制 利用循环进行数组的复制 import java.util.Arrays; public class Main3 {public static void main(String[] args) {int []arr new int[]{1,2,3,4,5,6};int []arr1 new int[arr.length];for (int i 0; i < arr.length; i…...
JS判断两个table数据是否完全相等(判断两个数组对象是否完全相等)
需求 现有的table为tableA,有多个要做对比的table为一个数组 CompareArray 涉及到的问题 外层是数组,但是内部数据都是对象,对象属性名的排序不一样外层数组也涉及到 顺序不一样的问题 思路 对compareArray做长度筛选 filter 得到 同长度…...
关于小程序,你想知道的这些
近年来,各大平台纷纷上架小程序,迎来了小程序的爆发式增长。今天就来跟大家简单分享一下小程序基本的运行机制和安全机制。 小程序的由来 在小程序没有出来之前,最初微信WebView逐渐成为移动web重要入口,微信发布了一整套网页开…...
WuThreat身份安全云-TVD每日漏洞情报-2023-02-13
漏洞名称:THORSTEN PHPMYFAQ 跨站点脚本 漏洞级别:高危 漏洞编号:CVE-2023-0791 相关涉及:THORSTEN PHPMYFAQ 3.1.10 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-03506 漏洞名称:TENDA AC23 越界写入 漏洞级别:高危 漏洞编号:CVE-2023-078…...
【Linux】软件安装(三分钟教会你如何在linux下安装软件)
🔥🔥 欢迎来到小林的博客!! 🛰️博客主页:✈️小林爱敲代码 🛰️博客专栏:✈️Linux之路 🛰️社区:✈️进步学堂 目录&…...
Fluent Python 笔记 第 10 章 序列的修改、散列和切片
本章将以第 9 章定义的二维向量 Vector2d 类为基础,向前迈出一大步,定义表示多维向量的 Vector 类。这个类的行为与 Python 中标准的不可变扁平序列一样。 10.3 协议和鸭子类型 在 Python 中创建功能完善的序列类型无需使用继承,只需实现符…...
在中国程序员工作是青春饭吗?
上个月公司告诉我毕业了。 我打开boss直聘,一溜溜的外包公司和我打招呼。 我寻思我说不定啥时候就离开深圳了,外包不外包也无所谓钱到位就行。(大公司学历不够格也进不去) 结果华为、平安的外包告诉我,不好意思呀&a…...
Linux tcpdump
tcpdump - 转储网络上的数据流 是不是感觉很懵?全方位描述tcpdump: 通俗:tcpdump是一个抓包工具,用于抓取网络中传输的数据包形象:tcpdump如同国家海关,凡是入境和出境的货物,海关都要抽样检查࿰…...
redis知识汇总(部署、高可用、集群)
文章目录一、redis知识汇总什么是redisredis的优缺点:为什么要用redis做缓存redis为什么这么快什么是持久化redis持久化机制是什么?各自优缺点?AOF和RDB怎么选择redis持久化数据和缓存怎么做扩容什么是事务redis事务的概念ACID概念主从复制re…...
【手写 Vuex 源码】第十篇 - Vuex 命名空间的实现
一,前言 上一篇,主要介绍了 Vuex 响应式数据和缓存的实现,主要涉及以下几个点: Vuex 的响应式实现原理;响应式核心方法 resetStoreVM;commit 和 dispatch 的处理; 本篇,继续介绍 …...
面试腾讯测试岗后感想,真的很后悔这5年一直都干的是基础测试....
前两天,我的一个朋友去大厂面试,跟我聊天时说:输的很彻底… 我问她:什么情况?她说:很后悔这5年来一直都干的是功能测试… 相信许多测试人也跟我朋友一样,从事了软件测试很多年,却依…...
知识图谱 方法、实践与应用 王昊奋 读书笔记(下)
最近读了这本书,在思路上很有启发,对知识图谱有了初步的认识,以下是原书后半部分的内容,可以购买实体书获取更多内容。 知识图谱推理 结合已有规则,推出新的事实,例如持有股份就能控制一家公司࿰…...
vue实现打印浏览器页面功能(两种方法)
推荐使用方法二 方法一:通过npm 安装插件 1,安装 npm install vue-print-nb --save 2,引入 安装好以后在main.js文件中引入 import Print from vue-print-nbVue.use(Print); //注册 3,现在就可以使用了 div id"printTest…...
【VictoriaMetrics】VictoriaMetrics单机版批量和单条数据写入(Prometheus格式)
VictoriaMetrics单机版支持以Prometheus格式的数据写入,写入支持单条数据写入以及多条数据写入,下面操作演示下如何使用 1、首先需要启动VictoriaMetrics单机版服务 2、使用postman插入单机版VictoriaMetrics,以当前时间插入数据 地址为 http://victoriaMetricsIP:8428/api…...
【青训营】分布式定时任务简述
这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天 分布式定时任务简述 定义 定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。分布式定时任务是把分散的、可靠性差的定时任务纳入统一平台,并且实现集群管理调度和…...
golang语言本身设计点总结
本文参考 1.golang的内存管理分配 golang的内存分配仿造Google公司的内存分配方法TCmalloc算法;她会把将内存请求分为两类,大对象请求和小对象请求,大对象为>32K的对象。 在了解golang的内存分配之前要知道什么事虚拟内存,虚拟内存是把磁盘作为全局…...
PTA L1-046 整除光棍(详解)
前言:内容包括四大模块:题目,代码实现,大致思路,代码解读 题目: 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被…...
将小程序代码转成uni-app代码
最近因为公司项目原因需要将小程序的项目转换成uni—app的项目,所以总结了以下几点: 首先你可以先到uni-app的官网简单看一下对它的介绍,本次文章的介绍是针对简单的微信小程序来进行的转化。 在这之前我们来看一下目录对比 下面就来介绍一下…...
C语言在游戏中播放音乐
使用 mciSendString 播放音乐 mciSendString 支持 mp3、wma、wav、mid 等多种媒体格式,使用非常简单。这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,代码如下: // 编译该范例前,请把 music.mp3 放…...
机器学习算法:随机森林
在经典机器学习中,随机森林一直是一种灵丹妙药类型的模型。 该模型很棒有几个原因: 与许多其他算法相比,需要较少的数据预处理,因此易于设置充当分类或回归模型不太容易过度拟合可以轻松计算特征重要性在本文[1]中,我想…...
如何做好多项目全生命周期的资源调配,提升资源利用效率?【橙子】
随着产品研发中心各团队承接的研发项目数量和规模日趋增加,人均产值和利润目标逐步提升,人均承接的项目数量也逐渐增加,目前缺乏合理的研发资源管理方案,存在多项目研发过程中资源冲突及部分项目研发人员忙闲不均等现象࿰…...
JVM - 内存分配
目录 JVM的简化架构和运行时数据区 JVM的简化架构 运行时数据区 PC寄存器 Java栈 Java堆 方法区 运行时常量池 本地方法栈 栈、堆、方法区交互关系 Java堆内存模型和分配 Java堆内存概述 Java堆的结构 对象的内存布局 对象的访问定位 Trace跟踪和Java堆的参数配…...
【知识图谱论文】Bi-Link:通过转换器和提示的对比学习桥接来自文本的归纳链接预测
文献题目:Bi-Link: Bridging Inductive Link Predictions from Text via Contrastive Learning of Transformers and Prompts发表期刊:WWW2023代码: https://anonymous.4open.science/r/Bi-Link-2277/. 摘要 归纳知识图的完成需要模型来理解…...
jieba+wordcloud 词云分析 202302 QCon 议题 TOP 关键词
效果图 步骤 (1)依赖 python 库 pip install jieba wordcloud数据 概览 $ head -n 5 input.txt 中国软件技术发展洞察和趋势预测报告 2023 QCon 大会内容策划思路 FinOps:从概念到落地 开源芯片的发展现状、机遇和未来 乐观者前行࿰…...
包管理工具-npm-npx-yarn-cnpm
代码共享方案 在我们通过模块化的方式将代码划分成一个个小的结构后,在以后的开发中我们就可以通过模块化的方式来封装自己的代码,并且封装成一个工具,这个工具我们可以让同事通过导入的方式来使用,甚至你可以分享给世界各地的程…...
go gin学习记录1
环境: MAC M1,Go 1.17.2,GoLand 默认执行指令的终端,如果没有特别说明,指的都是goland->Terminal 创建项目 Goland中新建项目,在$GOPATH/src/目录下建立t_gin项目。 进入项目,在goland的T…...
Docker常用命令
1:帮助命令docker versiondocker infodocker --help2:镜像命令docker images(列出本地主机上的镜像)各个选项说明:docker imagesREPOSITORY:表示镜docker images像的仓库源TAG:镜像的标签IMAGE IDÿ…...
论文写作——公式编辑器、latex表格、颜色搭配器
1、公式编辑器(网页版mathtype可用于latex公式编辑): MathType demo - For DevelopersLive demonstration about the features of Mathtype which allows edition equations and formulas (PNG, flash, SVG, PDF, EPS), based on MathML and compatible with LaTeX.https:/…...
MySQL数据库12——视图(VIEW)
视图概念 视图是一个虚拟表,称其为虚拟表的原因是:视图内的数据并不属于视图本身,而属于创建视图时用到的基本表。可以认为,视图是一个表中的数据经过某种筛选后的显示方式;或者多个表中的数据经过连接筛选后的显示方…...
上海的外贸网站建设公司排名/百度seo优化软件
自定义安装程序 有时需要在包的安装过程中执行其它的动作,例如:将它安装在默认的 vendor 以外的其它目录。 在这些情况下,你可以考虑创建一个自定义安装程序来处理特定的逻辑。 调用自定义安装程序 假设你的项目已经有了一个自定义的安装模块…...
做响应式网站应该注意什么/广东省人大常委会
1.首先我们需要安装C编译等等: 我们首先确保已经安装了Xcode ,然后打开Xcode,点击preference然后找到download。在这里面安装command line tool ,重启command就解决问题。 2.安装m4和autoconf # cd /usr/src # curl http://ftp.gnu.org/gnu/m4/m4-1.4.…...
ngrok做网站服务器/win10最强优化软件
我在Saas平台封装了调度组件,基于quartz框架,mongobd做持久化,用来做延时提醒、每日定时计算授权数、延时删除关联数据等。有组员使用时有误,这里记录一下 问题:测试环境服务重启,删除某个调度任务失败&am…...
做房产网站哪个好/深圳靠谱网站建设公司
http://soft.zdnet.com.cn/software_zone/2007/1109/619739.shtml 微软的WindowsServer 2003中防火墙的功能如此之简陋,让很多系统管理员将其视为鸡肋,它一直是一个简单的、仅支持入站防护、基于主机的状态防火墙。而随着Windows Server 2008的日渐向我们…...
做家宴网站/搜seo
说明: (1)强调:该Spring Boot电商项目中,会有大量的以前接触过的内容;但是,当我们遇到的时候,也会重新啰嗦、重复解释;以达到该专栏形成一个比较好的闭环的目的ÿ…...
小说网站怎么推广/seo网站优化工具大全
【问题】 现有红白蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起。这个问题之所以叫荷兰国旗问题,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰…...