2.1.3.1.1.20.18 Property: RDATE
RFC Reference: [RFC2445] section 4.8.5.3
Number of Instances Allowed: 0+
Format: Date-Time ([RFC2445] section 4.3.5), Date ([RFC2445] section 4.3.4), Period of Time ([RFC2445] section 4.3.9)
Brief Description: Specifies the start time of additional instances of the recurring appointment which have been created by the organizer.
Importing to Calendar objects
If this property is specified, an RRULE MUST also be specified in the same VEVENT.
RDATEs in Period of Time format SHOULD be ignored. All valid RDATEs SHOULD<175> be gathered into the ModifiedInstanceDates field of the RecurrencePattern structure ([MS-OXOCAL] section 2.2.1.44.1) embedded within the AppointmentRecurrencePattern structure ([MS-OXOCAL] section 2.2.1.44.5) in the PidLidAppointmentRecur property ([MS-OXOCAL] section 2.2.1.44), after the following validation:
All RDATEs MUST be converted to the time zone specified by PidLidTimeZoneStruct.
The time-of-day information MUST be stripped off (all entries MUST fall on midnight).
All duplicate entries MUST be removed.
Each RDATE MUST be pairable with an EXDATE to represent a moved instance of a recurring appointment. The moved instance obeys the following rules:
An instance MUST NOT be moved before the previous instance or after the next instance.
An instance MUST NOT be moved such that the intersection of its span with the span of any other instance of the appointment has a non-zero duration.
An instance MUST NOT be moved such that its start time falls on the same calendar day as that of another instance.
The ModifiedInstanceDates field in the RecurrencePattern structure MUST be sorted chronologically with the earliest dates at the start.
In addition, all valid RDATEs SHOULD<176> be stored in the ExceptionInfo field of the AppointmentRecurrencePattern structure. The contents of each ExceptionInfo block MUST be set as specified in the following table.
ExceptionInfo Field |
Value |
---|---|
StartDateTime |
Set to the RDATE value, in the time zone specified by PidLidTimeZoneStruct |
EndDateTime |
Set to StartDateTime + the duration of the appointment |
OriginalStartDate |
Set to the paired EXDATE value, in the time zone specified by PidLidTimeZoneStruct |
OverrideFlags |
Set to 0x00000000 |
SubjectLength/Subject |
(unset) |
MeetingType |
(unset) |
ReminderDelta |
(unset) |
ReminderSet |
(unset) |
LocationLength/Location |
(unset) |
BusyStatus |
(unset) |
Attachment |
(unset) |
SubType |
(unset) |
AppointmentColor |
(unset) |
Note that additional RDATEs could be derived from the DTSTARTs of other VEVENTs. See section 2.1.3.1.1.20.20. For exceptions generated by RECURRENCE-IDs, fields in the ExceptionInfo structure MUST be set according to the following table.
ExceptionInfo Field |
Value |
---|---|
StartDateTime |
Set to PidLidAppointmentStartWhole from the exception Calendar object, in the time zone specified by PidLidTimeZoneStruct |
EndDateTime |
Set to PidLidAppointmentEndWhole from the exception Calendar object, in the time zone specified by PidLidTimeZoneStruct |
OriginalStartDate |
Set to PidLidExceptionReplaceTime ([MS-OXPROPS] section 2.117) from the exception Calendar object, in the time zone specified by PidLidTimeZoneStruct |
OverrideFlags |
Set the appropriate flags specified in the next table. |
SubjectLength/Subject |
Set to PidTagSubject ([MS-OXPROPS] section 2.1034) from the exception Calendar object, leave unset if PidTagSubject is not present |
MeetingType |
(unset) |
ReminderDelta |
Set to PidLidReminderDelta ([MS-OXPROPS] section 2.218) from the exception Calendar object, leave unset if PidLidReminderDelta is not present |
ReminderSet |
Set to FALSE if PidLidReminderDelta is not present, leave unset otherwise |
LocationLength/Location |
Set to PidLidLocation from the exception Calendar object, leave unset if PidLidLocation is not present |
BusyStatus |
Set to PidLidBusyStatus ([MS-OXPROPS] section 2.47) from the exception Calendar object, leave unset if PidLidBusyStatus is not present |
Attachment |
(unset) |
SubType |
Set to PidLidAppointmentSubType from the exception Calendar object, leave unset if PidLidAppointmentSubType is not present |
AppointmentColor |
(unset) |
The following table specifies the valid values for the OverrideFlags field of the ExceptionInfo structure.
OverrideFlags Flag |
Meaning |
---|---|
0x0001 |
SubjectLength and Subject are set. |
0x0004 |
ReminderDelta is set. |
0x0008 |
ReminderSet is set. |
0x0010 |
LocationLength and Location are set. |
0x0020 |
BusyStatus is set. |
0x0080 |
SubType is set. |
0x0200 |
PidTagRtfCompressed ([MS-OXPROPS] section 2.942) or PidTagBody from the exception Calendar object is present. |
Exporting from Calendar objects
The RDATE property MUST NOT be exported for non-recurring appointments or exceptions of recurring appointments.
If there are entries in the ModifiedInstanceDates field in the RecurrencePattern structure embedded within the AppointmentRecurrencePattern structure, the date-times of all instances of the recurrence pattern falling on the days specified by the ModifiedInstanceDates field in the RecurrencePattern structure SHOULD<177> be exported in an RDATE, but exceptions exported as a separate VEVENT with a RECURRENCE-ID (see section 2.1.3.1.1.20.20) MUST NOT also be exported as an RDATE.
If the exception is an all-day appointment, the RDATE MUST be specified in the Date format.