Here is my understanding with some examples to illustrate:
- DAILY: every Nth (interval) day for up to X (Occurrences) occurrences. e.g. Every 2 days.
- WEEKLY: every Nth (interval) MTWTFSS (WeekdayComponent) for up to X (Occurrences) occurrences. e.g. Every Monday.
- MONTHLY_BY_DAY_OF_MONTH: every Nth (DayComponent) of every Xth (Interval) Month up to Y (Occurrences) occurrences. e.g. Every 15th of the Month.
- MONTHLY_BY_POSITION: Every Nth (Position) MTWTFSS (WeekdayComponent) of every Xth (Interval) Month up to Y (Occurrences) occurrences. e.g. Every second Tuesday of the Month.
- YEARLY_BY_DAY_OF_MONTH: every Nth (DayComponent) of every JFMAMJJASOND (MonthComponent) month of every Yth (Interval) Year up to Z (Occurrences) occurrences. e.g. every 25th of December.
- YEARLY_BY_POSITION: every Nth (Position) MTWTFSS (WeekdayComponent) of every JFMAMJJASOND (MonthComponent) month of every Yth (Interval) Year up to Z (Occurrences) occurrences. e.g. every third Wednesday of January.
What is BY_DAY_COUNT
and BY_WEEKDAY_COUNT
? It seems to be identical to DAILY
and WEEKLY
.
Oh, and there’s a typo for nterval
in the row in the table.
For reference here is some examples in the BlenderBIM Add-on source code:
recurrence_types: EnumProperty(items=[
("DAILY", "Daily", "e.g. Every day"),
("WEEKLY", "Weekly", "e.g. Every Friday"),
("MONTHLY_BY_DAY_OF_MONTH", "Monthly on Specified Date", "e.g. Every 2nd of each Month"),
("MONTHLY_BY_POSITION", "Monthly on Specified Weekday", "e.g. Every 1st Friday of each Month"),
# https://forums.buildingsmart.org/t/what-does-by-day-count-and-by-weekday-count-mean-in-ifcrecurrencetypeenum/3571
# ("BY_DAY_COUNT", "", ""),
# ("BY_WEEKDAY_COUNT", "", ""),
("YEARLY_BY_DAY_OF_MONTH", "Yearly on Specified Date", "e.g. Every 2nd of October"),
("YEARLY_BY_POSITION", "Yearly on Specified Weekday", "e.g. Every 1st Friday of October"),
], name="Recurrence Types")