Standard examples: https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html
Vorgefeiert: RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1
Nachgefeiert: RRULE:FREQ=YEARLY;BYMONTH=2,3;BYMONTHDAY=1,29;BYSETPOS=2
Normal: RRULE:FREQ=YEARLY;BYDAY=MO;BYMONTHDAY=5,6,7,8,9,10,11;BYMONTH=1
Problem, when contains two months, e.g.:
FREQ=YEARLY;BYDAY=SU;BYYEARDAY=331,332,333,334,335,336,337
-> Problem: BYYEARDAY often not supported
FREQ=YEARLY;BYDAY=SU;BYMONTHDAY=27,28,29,30;BYMONTH=11
FREQ=YEARLY;BYDAY=SU;BYMONTHDAY=1,2,3;BYMONTH=12
-> Problem: Multiple RRULEs are sometimes not supported
FREQ=YEARLY;BYMONTH=11,12;BYMONTHDAY=1,2,3,4,5,6,7,27,28,29,30;BYDAY=SU;BYSETPOS=2 or backwards
FREQ=YEARLY;BYMONTH=11,12;BYMONTHDAY=-31,-30,-29,-7,-6,-5,-4,-3,-2,-1;BYDAY=SU;BYSETPOS=-2
-> Problem: In general not possible between months 12/1 (and maybe problems with 29.2.)
Otherwise try to find other regularities:
FREQ=YEARLY;BYDAY=-5SU
FREQ=YEARLY;BYDAY=SU;BYSETPOS=-5
Normal: RRULE:FREQ=YEARLY;BYYEARDAY=44
Without: RRULE:FREQ=YEARLY;BYMONTHDAY=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31;BYMONTH=1,2,3,4,5,6,7,8,9,10,11,12;BYSETPOS=44
Be careful with leap years, there is a difference!
First approach: RRULE:FREQ=YEARLY;BYWEEKNO=19;BYDAY=MO
Second approach: RRULE:FREQ=YEARLY;BYYEARDAY=124,125,126,127,128,129,130;BYDAY=MO
Second approach: RRULE:FREQ=YEARLY;BYYEARDAY=5,6,7,...,363;BYDAY=MO;BYSETPOS=18
1. - 8. week: RRULE:FREQ=YEARLY;BYDAY=MO;BYMONTHDAY=5,6,7,8,9,10,11;BYMONTH=1
Special weeks: RRULE:FREQ=YEARLY;BYDAY=MO;BYMONTHDAY=5,6,7,8,9,10,11,12,13,14,15,16,17,18,23,24,25,26,27,28,29;BYMONTH=2,5;BYSETPOS=4
-> Works with KW 9,10,11,15,19,24,28,32,33,34,36,37,41,45,46,50 (maybe also adopted below KW 9)
All other weeks: RRULE:FREQ=YEARLY;BYDAY=MO;BYMONTHDAY=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,-30,-31;BYMONTH=2,3,4,5;BYSETPOS=14
-> Works with all KW 6 and higher (maybe also adopted below KW6)
KW 53: RRULE:FREQ=YEARLY;BYDAY=MO;BYMONTHDAY=26,27,28;BYMONTH=1,12;BYSETPOS=2
First approach:
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=SU;BYMONTHDAY=27,28,29,30
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=12;BYDAY=SU;BYMONTHDAY=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
Second approach: RRULE:FREQ=YEARLY;BYYEARDAY=124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151;BYDAY=SU
Second approach: RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=5,6,7,8,9,10,11,12;BYDAY=SU;BYMONTHDAY=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31;BYSETPOS=31,32,33,34
Second approach: RRULE:FREQ=YEARLY;BYDAY=-5SU,-4SU,-3SU,-2SU or RRULE:FREQ=YEARLY;BYDAY=SU;BYSETPOS=-5,-4,-3,-2