http://www.ietf.org/rfc/rfc2445.txt
Information, not contained in the built/parsed RRULE, necessary to determine
the various recurrence instance start time and dates are derived from the
DTSTART property (default: \DateTime()).
For example, "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within
the month or a time. This information would be the same as what is specified
for DTSTART.
BYxxx rule parts modify the recurrence in some manner. BYxxx rule parts for
a period of time which is the same or greater than the frequency generally
reduce or limit the number of occurrences of the recurrence generated.
For example, "FREQ=DAILY;BYMONTH=1" reduces the number of recurrence
instances from all days (if BYMONTH tag is not present) to all days in
January.
BYxxx rule parts for a period of time less than the frequency generally
increase or expand the number of occurrences of the recurrence.
For example, "FREQ=YEARLY;BYMONTH=1,2" increases the number of days within
the yearly recurrence set from 1 (if BYMONTH tag is not present) to 2.
If multiple BYxxx rule parts are specified, then after evaluating the
specified FREQ and INTERVAL rule parts, the BYxxx rule parts are applied to
the current set of evaluated occurrences in the following order:
BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR,
BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are evaluated.
Here is an example of evaluating multiple BYxxx rule parts.
FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;BYMINUTE=30
First, the "INTERVAL=2" would be applied to "FREQ=YEARLY" to arrive at
"every other year".
Then, "BYMONTH=1" would be applied to arrive at "every January, every
other year".
Then, "BYDAY=SU" would be applied to arrive at "every Sunday in January,
every other year".
Then, "BYHOUR=8,9" would be applied to arrive at "every Sunday in January
at 8 AM and 9 AM, every other year".
Then, "BYMINUTE=30" would be applied to arrive at "every Sunday in January
at 8:30 AM and 9:30 AM, every other year".
Then, lacking information from RRULE, the second is derived from DTSTART, to
end up in "every Sunday in January at 8:30:00 AM and 9:30:00 AM, every
other year". Similarly, if the BYMINUTE, BYHOUR, BYDAY, BYMONTHDAY or
BYMONTH rule part were missing, the appropriate minute, hour, day or month
would have been retrieved from the "DTSTART" property.
Example: The following is a rule which specifies 10 meetings which occur
every other day:
FREQ=DAILY;COUNT=10;INTERVAL=2