天天看点

时间段的重叠判断

http://blog.sina.com.cn/s/blog_59a59f220100atyz.html

两个时间段判断是否重叠比较常见,

如: startdate1 -- enddate1

    startdate2 -- enddate2

当然前提是保证开始时间早于结束时间,什么你问如果不是?那你就自己处理一下保证开始时间早于结束时间.

可能首先想到的是

(startdate2 between startdate1 and enddate1)

or (enddate2 between startdate1 and enddate1)

or(startdate1 between startdate2 and enddate2 )

or(enddate1 between startdate2 and enddate2)

以此类推,多段也貌似能够判断,但是否能完全覆盖到呢?有兴趣可以自己验证一下.

但是个人感觉有点麻烦,在此介绍一个简单的方法.如果你发现此方法有问题欢迎一起讨论.

假设要加入的时间段为 as1  ae1

已存在的所有时间段为  xs1  xe1

xe1>as1 and xs1<ae1

满足有重叠,不满足无重叠

时间段的重叠判断

同时满足绿和红则有重叠

绿线:已存在的所有结束时间大于要添加的开始时间

红线:已存在的所有开始时间都小于要添加的结束时间

继续阅读