【技术支持】判断两个时间段是否有交集的伪代码

原创 2015年07月07日 11:06:31

假设有时间段A(start_timeA,end_timeA)、B(start_timeB,end_timeB),可能A,B都是一个时间点。


A、B有交集表示有以下几种情况:

1、A包含且只包含B的start_timeB,即B包含且只包含A的end_timeA,包括,

1.1 start_timeA < start_timeB and end_timeA < end_timeB and end_timeA > start_timeB,如图1.1。

1.2 start_timeA = start_timeB and end_timeA < end_timeB and end_timeA > start_timeB,如图1.2。

1.3 end_timeA = start_timeB,此时必定start_timeA <= start_timeB,如图1.3。

1.4 start_timeA = end_timeA = start_timeB,即A是一个时间点,与start_timeB重合,如图1.4。


2、A包含且只包含B的end_timeB,即B包含且只包含B的start_timeA,包括,

2.1 start_timeA > start_timeB and start_timeA < end_timeB and end_timeA > end_timeB,如图2.1。

2.2 start_timeA = end_timeB,此时必定end_timeA >= end_timeB,如图2.2。

2.3 end_timeA = end_timeB and start_timeA > start_timeB and start_timeA < end_timeB,如图2.3。

2.4 end_timeA = end_timeB = start_timeA,即A是一个时间点,与end_timeB重合,如图2.4。

3、A完全包含B,即B完全被A包含,包括,

3.1 start_timeA < start_timeB and end_timeA > end_timeB,如图3.1。

3.2 start_timeA = start_timeB and end_timeA > end_timeB,如图3.2。

3.3 start_timeA < start_timeB and end_timeA = end_timeB,如图3.3。


4、A完全被B包含,即B完全包含A,同3。


5、A、B完全重合

start_timeA = start_timeA and end_timeA = end_timeB,如图3.4。



经过一系列的推导,可以得出最简判断伪代码:

start_timeA <= end_timeB and end_timeA >= start_timeB



Android 比较两个时间段是否有交集或重复

先看一个例图: 在金山《电池管家》应用中就有一个类似上图这样的功能—— 开启多个定时任务。 当开启另一个定时任务的时候,如果即将开启的这个定时任务的时间段与已经开启了的定时任务的时间段有交集的话,...
  • baidu_23478311
  • baidu_23478311
  • 2016年02月18日 18:39
  • 745

一个日期时间段有交集求并集的问题

同学工作中遇到的,问题大概是:输入一系列时间段(开始日期start,结束日期end)返回结果为:时间段若有交集则取其并集,无交集则返回原时间段,如输入:20160101,20160103;201601...
  • linfujian1999
  • linfujian1999
  • 2017年01月08日 16:20
  • 967

两个集合List的交集

两个List的交集
  • yuxiangaaaaa
  • yuxiangaaaaa
  • 2016年10月25日 10:55
  • 1765

判断两个区间有无交集

有两个区间A[a1,b1], B[a2,b2],判断这两个区间有没有交集。我们可以分为两种思维来判断: 1. 正向思维:判断所有相交的情况 /**判断所有可能相交的情况 * 1. A[1,5],...
  • mrwangweijin
  • mrwangweijin
  • 2017年07月29日 12:15
  • 1152

js判断两个日期之差是否在指定时间段内

js判断两个日期之差是否在指定时间段内有三种方法(1)方法一通过操作年月日时分秒判断两者时间差 参考文章:http://blog.csdn.net/piggachen/article/details...
  • xyr05288
  • xyr05288
  • 2017年07月26日 12:05
  • 849

MYSQL 中判断2个逗号分割的字符串是否有交集

使用存储过程:DROP FUNCTION IF EXISTS `INTE_ARRAY`; delimiter // -- 集合交集检查函数 -- @param varchar(255) setA A...
  • qilin001cs
  • qilin001cs
  • 2016年07月21日 10:36
  • 2067

判断某个时间在不在某个时间段

isBetween方法调用isBetweenL方法,中间处理了一下时长 isBetweenL方法,主要任务是构造开始时间的字符串和结束时间的字符串,接着使用date类实例的compareTo方法与当前...
  • qq_26819733
  • qq_26819733
  • 2017年02月13日 20:17
  • 928

输入两个集合求出它们的交集,并集,相对差与相对补集并判断他们是否相等

#include #include #define N 40 int geshu(int a[]); void jiaoji(int h,int k,int a[N],int b[N]); voi...
  • hjkapple
  • hjkapple
  • 2018年01月04日 12:04
  • 54

c# 判断时间是否在 某一时间段内

1.判断时间是否在某一时间段内 protected bool getTimeSpan(string timeStr) { //判断当前时间是否在工作时间段内 string ...
  • bruce135lee
  • bruce135lee
  • 2017年11月23日 11:14
  • 136

PHP判断指定时间段的2个方法

一、包含小时和分钟的判断 //设置【日期、时间】默认时区 date_default_timezone_set("Asia/Shanghai"); $time = intval (date("Hi"...
  • wplblog
  • wplblog
  • 2016年07月29日 19:32
  • 1294
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【技术支持】判断两个时间段是否有交集的伪代码
举报原因:
原因补充:

(最多只允许输入30个字)