关闭

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

245人阅读 评论(0) 收藏 举报
分类:

假设有时间段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



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:27176次
    • 积分:557
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:4篇
    • 译文:0篇
    • 评论:3条
    最新评论