4

我在一个看起来像谷歌日历的应用程序中工作,但有一个主要区别:事件不应该与其他事件有交集。这意味着没有两个事件可以共享公共时间,即使以分钟为单位也是如此。这对于只存储会议的日历特别有用,因为不可能同时参加两个会议。

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

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

4

1 回答 1

4

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

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

但是,对于某些类型的规则,这是可能的 - 例如,每周四的规则不能与每个星期二的规则相交。有问题的是一个月中的几天和一年中的几天与一周中的几天相交,以及从不相交的频率。

最好的办法是执行可分析检查的规则,然后对其他人生成明年左右的数据并手动进行比较。

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

于 2011-09-07T20:44:13.640 回答