检测重叠日期重复规则

fjs*_*jsj 4 python intersection interval-intersection python-datetime python-dateutil

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

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

是否可以仅使用 rrules 来检测重叠日期?另一个库中是否已经实现了类似的功能?

Mal*_*Box 5

不,我不认为可以分析一个规则来查看它是否可以在不创建日期时间对象的情况下与另一个规则相交。

本质上,您是在不运行算法的情况下询问算法的输出,我认为这是不可计算的。

然而,对于某些类型的规则是可能的 - 例如每周四的规则不能与每周二的规则相交。有问题的是一个月中的日子和一年中的日子与一周中的日子相交,以及从不相交的频率。

最好的选择是制定可分析检查的规则,然后为其他人生成明年左右的数据并手动进行比较。

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