我正在尝试将多个 iCalendar 合并在一起。我希望能够合并重叠的事件。因此,例如,如果我在星期一下午 12 点到下午 2 点有一个活动,在下午 1 点到 3 点有另一个活动,我想结束一个从下午 12 点到下午 3 点的活动。
我正在寻找一个在 PHP 中执行此操作的简单开源脚本,或者只是帮助算法本身。
任何形式的帮助表示赞赏!
对——遗憾的是,我无法帮助你编写 PHP 编码,因为我对 PHP 一无所知(这也意味着我的算法帮助可能只是遥遥无期)。但是,我对算法非常了解,所以我会想出尽可能多的方法。我会给出每个支持和反对的理由,你可以选择,希望我们都能学到一些东西。
首先,简化——注意当合并两个以上的 ICalendar 时,我们可以合并两个,然后将我们的结果与下一个等合并;这意味着我们的算法可以合并两个来工作。
考虑到这一点,我可以召集概念上最简单的合并:
实际上,这将接近最佳算法——O(n)时间,其中 n 是每个 ICalendar 的平均事件数;这意味着不会有其他方法出现……遗憾的是。
如果有人感兴趣,这就是我最终要做的。它可能不是最有效的,但对于我正在做的事情来说已经足够了。