算法:如何检查重复事件定义的交叉点?

gla*_*666 7 algorithm date recurring

问题来自MS Outlook日历行为.

想象一下,我有两个反复发生的事件(从今天开始):"每个第二个星期一"和"每个奇怪的日期".有没有办法检查交叉点和/或在算法上找到第一个交叉日期而不是在每个日期强制执行?

定义可以用CRON的符号或ICal符号表示.我觉得没关系.

阳历中有没有解决方案?

UPD:知道MS Outlook日历如何处理这些事件也很有趣.我的意思是它如何发现前者.今天有两个活动?我想也应该是确定具体日期是否适合重复事件定义的技术.

形式上它可以描述为两个函数算法:

Date:intersection(Event e1, Event e2)
boolean:contains(Date date, Event ev)
Run Code Online (Sandbox Code Playgroud)

关于限制,我们可以从事件定义表示法.您可以在outlook(或iCal)中看到,您可以定义不是那种复杂的重复事件.

Jam*_*mes 1

由于第一次重复的周期为 14 天,因此仅当月份以奇数结尾时,该日的奇偶性(奇数或偶数)才会改变:一月、闰二月、三月、五月、七月、八月、十月、十二月。一个月不会改变。