Representing calendar data is pretty straightforward. All you need is a way to represent fixed dates. Mapping those onto a calendar page is easy. But when you introduce the notion of repeating events, the problem space notches up in complexity. You then need a way to represent "events", and to provide a way for mapping events onto fixed dates.
Martin Fowler, author of (among other things) Analysis Patterns has a paper called Recurring Events for Calendars which may well worth your time to read.