Skip to content

RFC 5545 examples of recurrences #197

@niccokunzmann

Description

@niccokunzmann

RFC 5545 defines a few recurrence examples.
I am unsure if these work. Please create a test for at least one of them in a test_issue_..._rfc_examples.py file.

   Every 3 hours from 9:00 AM to 5:00 PM on a specific day:

   DTSTART;TZID=America/New_York:19970902T090000
   RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z

   ==> (September 2, 1997 EDT) 09:00,12:00,15:00

  Every 15 minutes for 6 occurrences:

   DTSTART;TZID=America/New_York:19970902T090000
   RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6

   ==> (September 2, 1997 EDT) 09:00,09:15,09:30,09:45,10:00,10:15

  Every hour and a half for 4 occurrences:

   DTSTART;TZID=America/New_York:19970902T090000
   RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4

   ==> (September 2, 1997 EDT) 09:00,10:30;12:00;13:30

  Every 20 minutes from 9:00 AM to 4:40 PM every day:

   DTSTART;TZID=America/New_York:19970902T090000
   RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40
   or
   RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16

   ==> (September 2, 1997 EDT) 9:00,9:20,9:40,10:00,10:20,
                               ... 16:00,16:20,16:40
       (September 3, 1997 EDT) 9:00,9:20,9:40,10:00,10:20,
                               ...16:00,16:20,16:40
       ...

  An example where the days generated makes a difference because of
  WKST:

   DTSTART;TZID=America/New_York:19970805T090000
   RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO

   ==> (1997 EDT) August 5,10,19,24

  changing only WKST from MO to SU, yields different results...

   DTSTART;TZID=America/New_York:19970805T090000
   RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU

   ==> (1997 EDT) August 5,17,19,31

  An example where an invalid date (i.e., February 30) is ignored.

   DTSTART;TZID=America/New_York:20070115T090000
   RRULE:FREQ=MONTHLY;BYMONTHDAY=15,30;COUNT=5

   ==> (2007 EST) January 15,30
       (2007 EST) February 15
       (2007 EDT) March 15,30

How to:

  1. Create a calendar file with an event with the attributes
  2. Create a test that uses this file
  3. Check that all the dates listed are generated
  4. Check the count in case it is a limited rrule

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions