检测重叠日期重复规则

时间:2011-08-31 22:40:19

标签: python intersection python-dateutil python-datetime interval-intersection

我正在使用看起来像Google日历的应用程序,但有一个主要区别:事件不应该与其他事件交叉。这意味着即使在几分钟的粒度内,也没有两个事件可以共享公共时间。这对于仅存储会议的日历特别有用,因为在两次会议中不可能同时进行会议。

就像Google日历一样,可以使用重复规则创建事件(例如,每周五和周日从上午10点到下午13点)。所以我想通过仅使用rrules(python-dateutil模块)来检测重叠事件,而不需要创建N个datetime对象并检查每个对象的交集。

是否可以仅使用套准来检测重叠日期?在另一个库中是否已经实现了类似的东西?

1 个答案:

答案 0 :(得分:3)

不,我不相信在不创建日期时间对象的情况下分析一个rrule是否可以与另一个rrule相交。

基本上你在没有运行算法的情况下要求输出算法,我认为这是不可计算的。

然而,对于某些类型的套箍,它是可能的 - 例如,每个星期四的一个标准不能在每个星期二与一个套头相交。有问题的是一个月中的几天和一年中的几天与一周中的几天以及从不相交的频率相交。

最好的办法是做分析性分析检查的规则,然后为其他人生成下一年左右的数据并手动比较。

算法可以快速运行,因为您可以在添加每个规则时缓存现有的占用时间。