cron recurring ("man 5 crontab") parseable using http://search.cpan.org/~msisk/DateTime-Event-Cron-0.07/lib/DateTime/Event/Cron.pm no duration just recurrence and start. 5 fields (plus rest of line for command) minute,hour,monthday,month,weekday each can be a numeric range (like 0-59), a specific number, or "*" which is the maximal range a range means do it at all matching points in the range to step within the range, follow by "/" and digit. "*/2" means every 2 hours iCalendar recurring (RFC2445 section 4.8.5) some debate about its usefulness: http://lists.osafoundation.org/pipermail/ietf-calsify/2004-August/000011.html DSTART - the starting date of the event as usual. RRULE = recurrence rule. either (start,end) or (start,duration,rrule) RRULE:FREQ=WEEKLY;UNTIL=20021214T055959;INTERVAL=1;BYDAY=MO,TU,WE,TH FREQ is mandatory to end: can have UNTIL, COUNT, or none INTERVAL is optional, means how many of the units in FREQ (default 1) BY* (except BYSETPOS) lists the particular times within that frequency unit. BYDAY is suitable for FREQ=WEEKLY. BYMONTH and BYWEEKNO are suitable for FREQ=YEARLY first friday each month, for 10 months: RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR Every other month on the 1st and last Sunday of the month for 10 occurrences: RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU Monthly on the third to the last day of the month, forever RRULE:FREQ=MONTHLY;BYMONTHDAY=-3 Every 20th Monday of the year, forever RRULE:FREQ=YEARLY;BYDAY=20MO Every Friday the 13th, forever RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13 BYSETPOS only allowed when another BY* is specified it selects among the set specified by the BY* option a -1 means the last in the set; a 1 means the first. thus this is last weekday in each month: RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 this is first day of each year where the month start falls on a monday (????): RRULE:FREQ=YEARLY;BYDAY=MO;BYMONTHDAY=1;BYSETPOS=1 Note that BYSETPOS is not always necessary, because you can say: RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=-1TH For last thursday of each month WKST week start. relevant for FREQ=WEEKLY In general: start with set of FREQ, starting with DTSTART inclusive (DTSTART is mandatory for RRULE but not RDATE) and if either DTEND or UNTIL is specified, restrict to lesser (inclusive) skip by INTERVAL (default 1 meaning no skipping) limit by BYDAY/BYMONTH/BYWEEKNO/BYMONTHDAY/BYMINUTE/BYHOUR/BYSECOND limit by BYSETPOS (for each BY* subset within a freq) limit by COUNT DSTART supplies missing info. but can specify there. FREQ=WEEKLY;BYDAY=SU;BYHOUR=8;BYMINUTE=30 means every sunday at 8:30am EXRULE = rule out things in RRULE EXRULE:weekly on Tuesdays RRULE:daily means every day except tuesdays RDATE = list of specific dates/times XDATE = rule out things in RDATE RECUR can have multiple RRULE, EXRULE within a single RECUR (all share same DTSTART) union of RRULE,RDATE, minus union oF EXRULE,XDATE ISO has recurrence, periods, duration. http://www.mcs.vuw.ac.nz/technical/software/SGML/doc/iso8601/ISO8601.html http://www.cs.tut.fi/~jkorpela/iso8601.html draft copies from: http://www.astroclark.freeserve.co.uk/iso8601/index.html http://dmoz.org/Science/Reference/Standards/Individual_Standards/ISO_8601/ http://www.webaugur.com/bibliotheca/standards/iso8601/ISO-FDIS-8601/index-29.html week date (5.2.3) "-W-5" means the 5th day of the implied week "-W155" means the 5th day of the 15th week of the implied year day 1 of a week is Monday, and day 7 is Sunday duration has leading P "P18Y9M4DT11H9M8S" "P2W" [2 weeks] period (aka "time interval") can be start and end separated by slash "19930214T131030/19930214T131031" 1998-05-12T14:15Z/1998-05-13T16:00Z 1998-05-12T14:15Z/16:00Z 1998-05-12/15 [end is same precision as start, and can omit higher order parts] period can be start and duration "19930214T131030/P18Y9M4DT11H9M8S" period can be duration and end "P18Y9M4DT11H9M8S/19930214T131030" recurrence has: "R" [number of recurrences] "/" timeinterval so just assumes that the timeintervals are adjoining (duration is used interval of recurrence, nothing about duration of that event) not sufficient for repetitive events: http://groups.yahoo.com/group/ISO8601/message/125 "R8/P1Y" means 8 years. "R6/P15W" means 6 periods of 15weeks. "R4/1999-12-31/2000-12-31 " means 4 years starting in new years eve XML Schema http://www.w3.org/TR/xmlschema-2/ does not define a recurring format it does have duration: http://www.w3.org/TR/xmlschema-2/#duration but does not constraint integer values P1Y2M3DT10H30M -P120D