Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Algorithm: how to check intersections of recurring events definitions?

The question comes from MS Outlook calendar behavior.

Imagine I have two recurring events (starting from today): "each second Monday" and "every odd date". Is there any way to check intersections and/or find the first intersecting date algorithmically without brute-forcing over each date?

Definitions can be made in CRON's notations or ICal notation. I think it doesn't matter.

Are there any solutions for this in Gregorian calendar?

UPD: It is also interesting to know how MS Outlook Calendar handles these events. I mean how it discovers that ex. today has two events? I guess should be also technique for determination of whether concrete date suits recurring event definition.

Formally it can be described as two function algorithm:

Date:intersection(Event e1, Event e2)
boolean:contains(Date date, Event ev)

Regarding restrictions, we can go from event definition notation. You can see in outlook (or iCal), that you can define not that complex kind of recurring event.

like image 548
glaz666 Avatar asked May 25 '10 11:05

glaz666


1 Answers

Since the period for the 1st recurrence is 14 days, parity (odd or even) of the day will only change when the month ends in an odd number: Jan, leap Feb, Mar, May, Jul, Aug, Oct, Dec. During a month it will not change.

like image 150
James Avatar answered Sep 26 '22 22:09

James