Last weekday of the month or the 31st? Check the recurrence rule
The 31st, the last calendar day and the last Monday–Friday date are different recurrence requests. An RFC 5545 rule targeting day 31 skips months without it. A weekday-only rule excludes weekends, but does not know your public holidays.
Verified 2026 Monthly Resolution Table: BYMONTHDAY=31 vs BYMONTHDAY=-1 vs BYDAY=-1FR vs Last Mon–Fri Date (BYSETPOS=-1)
| 2026 Month (Length) | BYMONTHDAY=31 (Fixed 31st) | BYMONTHDAY=-1 (Last Calendar Day) | BYDAY=-1FR (Last Friday) | BYDAY=MO..FR;BYSETPOS=-1 (Last Mon–Fri Date) |
|---|---|---|---|---|
| January 2026 (31d) | Sat Jan 31 | Sat Jan 31 (Weekend) | Fri Jan 30 | Fri Jan 30 (Steps back from Sat 31) |
| February 2026 (28d) | SKIPPED (No Feb 31) | Sat Feb 28 (Weekend) | Fri Feb 27 | Fri Feb 27 (Steps back from Sat 28) |
| March 2026 (31d) | Tue Mar 31 | Tue Mar 31 | Fri Mar 27 | Tue Mar 31 |
| April 2026 (30d) | SKIPPED (No Apr 31) | Thu Apr 30 | Fri Apr 24 | Thu Apr 30 |
| May 2026 (31d) | Sun May 31 | Sun May 31 (Weekend) | Fri May 29 | Fri May 29 (Steps back from Sun 31) |
| June 2026 (30d) | SKIPPED (No Jun 31) | Tue Jun 30 | Fri Jun 26 | Tue Jun 30 |
| July & August 2026 (31d) | Fri Jul 31 & Mon Aug 31 | Fri Jul 31 & Mon Aug 31 | Fri Jul 31 & Fri Aug 28 | Fri Jul 31 & Mon Aug 31 |
| September 2026 (30d) | SKIPPED (No Sep 31) | Wed Sep 30 | Fri Sep 25 | Wed Sep 30 |
| October 2026 (31d) | Sat Oct 31 | Sat Oct 31 (Weekend) | Fri Oct 30 | Fri Oct 30 (Steps back from Sat 31) |
| November & December 2026 (30d / 31d) | Nov: SKIPPED | Dec: Thu Dec 31 | Mon Nov 30 & Thu Dec 31 | Fri Nov 27 & Fri Dec 25 | Mon Nov 30 & Thu Dec 31 |
Invalid dates are skipped, not rolled back
RFC 5545 section 3.3.10 says recurrence instances with invalid dates are ignored and not counted. FREQ=MONTHLY;BYMONTHDAY=31 therefore produces seven dates in a full 2026 year: January, March, May, July, August, October and December 31.
Do not confuse that rule with BYMONTHDAY=-1, which selects the final date of every month. If expressing an all-day start in an ICS file, use DTSTART;VALUE=DATE:20260131 rather than an eight-digit value with the default DATE-TIME type.
Four patterns answer four different questions
FREQ=MONTHLY;BYMONTHDAY=31 selects the 31st where it exists. FREQ=MONTHLY;BYMONTHDAY=-1 selects the last calendar date. FREQ=MONTHLY;BYDAY=-1FR selects the last Friday.
FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 selects the final Monday–Friday date from that month’s weekday set. It does not exclude a public holiday or a personal day off. Do not present it as a universal last business-day rule.
Read the calculated 2026 dates before choosing
The table is calculated from Gregorian month lengths and weekdays. Four 2026 month ends fall on weekends: January 31, February 28, May 31 and October 31. The final Monday–Friday date moves back in those months.
In March, the last Friday is March 27, but the final Monday–Friday date is Tuesday March 31. That difference matters when the requirement is truly the final weekday rather than a Friday meeting.
Check the editor and save a disposable example
Apple’s Mac guide documents Custom repeat, Frequency and an On the pattern, including the last weekday of a month. Microsoft’s cited guide documents monthly specific-day and ordinal-weekday examples. Google’s guide documents choosing a repeat frequency and end, without listing every raw RRULE its editor or importer preserves.
Use the options actually present in the app, then inspect the next several saved dates. A standard’s ability to express a rule is not proof that every app exposes, imports or preserves it unchanged. Use a disposable calendar before relying on a complex imported rule.
What it looks like
Cloud Calendars overview, using our product images. Provider settings and protocol examples described in this guide are separate from the screens shown here.
What to do
- Write whether the requirement means last date, last Friday or last Monday–Friday date.
- Check a short month and a weekend month end.
- Apply a separately confirmed holiday policy if needed.
- Verify saved occurrences in the source account and recipient app.
Questions
- Does the final weekday rule avoid holidays?
- No. MO,TU,WE,TH,FR excludes Saturdays and Sundays only. A holiday on a weekday still matches unless handled separately.
- Why is a monthly-on-31 rule missing in April?
- April has no 31st. RFC 5545 ignores that invalid recurrence date rather than moving it to April 30.

