检测重叠的重复时间段的算法

时间:2016-01-07 14:10:47

标签: c# algorithm datetime time calendar

我正在尝试根据天数和时间表来检测事件的崩溃。

比此问题更复杂的版本Algorithm to detect overlapping periods

我的情况: A活动是在周二,周六和周六的两个日期之间的上午8点到下午1点。

B事件发生在周二和周六的上午11点到下午2点,两个日期之间(事件A的不同)

在这里,我把两个事件之间的分歧推到了红色。

我花了一个小时试图编写一个算法来检测两个事件之间是否至少有一个切割。

顺便说一下,事件结束的日期(趋势)可能是不确定的。

是否存在管理此算法的现有算法?

enter image description here

1 个答案:

答案 0 :(得分:0)

找出哪一个首先结束。如果A和B都是无限的,那么将来只需选择一些随机日期。

我将假设您的活动每周重复一次(每周都有相同的重复次数)。如果这不正确,则用最大的重复基础(月/年/无论如何)代替周。

在您在第一步中选择的日期之前的最后一周。生成当周发生的所有事件(确保您执行所有检查,因为其中一个事件可能在此期间开始重复。对于每个事件,您应该具有开始和结束的具体时间戳。现在检查这些是否重叠。如果至少其中一些人会发生碰撞。如果没有,那么你就会好起来。