2.1.3.2.2 Recurrence Templates
The RRULE and X-MICROSOFT-RRULE properties MUST NOT be exported for non-recurring appointments or exceptions of recurring appointments.
Although the syntax permits a wide variety of recurrences, only RRULE properties and X-MICROSOFT-RRULE properties fitting the templates enumerated in this section SHOULD<269> be mapped into the AppointmentRecurrencePattern structure ([MS-OXOCAL] section 2.2.1.44.5) in the PidLidAppointmentRecur property ([MS-OXOCAL] section 2.2.1.44).
Implementations SHOULD gracefully fail to map any recurrences that do not fit the templates enumerated in this section.
Once a recurrence has been successfully mapped into the AppointmentRecurrencePattern structure, implementations SHOULD<270> also set the PidLidClipStart property ([MS-OXOCAL] section 2.2.1.14) to the value of the StartDate field of the AppointmentRecurrencePattern structure and set the PidLidClipEnd property ([MS-OXOCAL] section 2.2.1.15) to the value of the EndDate field of the AppointmentRecurrencePattern structure.
The following sections express the templates in ABNF notation, as specified in [RFC5234]. The following code shows common rules used in the templates.
-
common-parts = [interval-part] [byhour-part] [byminute-part] [(until-part / count-part)] [wkst-part] interval-part = ";INTERVAL=" 1*DIGIT ; See 2.3.1.2 byminute-part = ";BYMINUTE=" 1*2DIGIT ; See 2.3.1.3 byhour-part = ";BYHOUR=" 1*2DIGIT ; See 2.3.1.4 bymonthday-part = ";BYMONTHDAY=" ["-"]1*2DIGIT ; See 2.3.1.5 byday-part = ";BYDAY=" byday-list ; See 2.3.1.6 byday-nth-part = ";BYDAY=" byday-nth-list ; See 2.3.1.6 bymonth-part = ";BYMONTH=" 1*2DIGIT ; See 2.3.1.7 bysetpos-part = ";BYSETPOS=" weeknum ; See 2.3.1.8 wkst-part = ";WKST=" dayofweek ; See 2.3.1.9 until-part = ";UNTIL=" datetime ; See 2.3.1.10 count-part = ";COUNT=" 1*3DIGIT ; See 2.3.1.11 byday-list = byday-elm *("," byday-elm) byday-elm = [weeknum] dayofweek dayofweek = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" weeknum = "-1" / "1" / "2" / "3" / "4" byday-nth-list = dayofweek byday-nth-list =/ "SA,SU" ; Any ordering byday-nth-list =/ "MO,TU,WE,TH,FR" ; Any ordering byday-nth-list =/ "SU,MO,TU,WE,TH,FR,SA" ; Any ordering datetime = year month day "T" hour minute second ["Z"] year = 4DIGIT month = 2DIGIT day = 2DIGIT hour = 2DIGIT minute = 2DIGIT second = "00"