时间为 datetime 对象。 start_time1 , end_time1 和 start_time2 , end_time2 判断这 2 个时间段是否有交集有什么好的方法吗?我只会用 if 按照条件判断,感觉很笨重。 请教各位 V 友!
1
zhjits 2017-08-22 22:57:40 +08:00
start_time1 < start_time2 < end_time1 or start_time2 < start_time1 < end_time2
|
2
autoxbc 2017-08-22 23:22:58 +08:00
无交集
start_time1 < end_time2 || start_time2 < end_time1 有交集 上面取反 |
4
lcdtyph 2017-08-22 23:33:29 +08:00 via iPhone 3
max(start1, start2)<min(end1, end2)就相交了
|
5
am241 2017-08-22 23:35:38 +08:00 via Android
(s2-e1)*(s1-e2) < 0
|
8
blankme 2017-08-23 00:09:23 +08:00
记两组数据为(x1, x2) (y1, y2)
它们有交集的条件是: arctan(y2/x1) > 1 && arctan(y1/x2) < 1 |
10
Or2 2017-08-23 06:33:54 +08:00 via Android 1
好奇为啥没人说是 S 2 -E1 <0
|
11
wisej 2017-08-23 08:14:50 +08:00
设 a 为 各个活动持续时间之和
设 b 为 max(E1,E2,...,EN) - min(S1,S2,...,SN) 如果 a > b,说明有交集 |