Time and planning

Nth Weekday Calculator

Find monthly dates such as the second Saturday or last Friday within your chosen range.

Monthly date rule and range

Both dates are included. Use years 0001–9999 and a range touching at most 1,200 calendar months (100 complete years).

Choose one day of the week, including Saturday or Sunday. Fifth skips months without that occurrence; Last always finds the final occurrence in the month. No public-holiday adjustments.

Example period: January–March 2027. Keeps your selected occurrence and day.

Monthly matching dates

Enter your date range and monthly rule, then select Calculate.

Copy includes matching dates and conditions. CSV includes every month, omission reasons, and conditions; it is a results file, not a file for restoring inputs.

Calculated conditions appear in Recent calculations on the home page (last five, in this tab). Use Copy link to keep or share them for later. Loading inputs requires you to select Calculate again.

Check these dates on a calendar

Monthly meeting

Second Saturdays, January–March 2027

Jan 9 · Feb 13 · Mar 13

From 2027-01-01 through 2027-03-31, Second + Saturday returns three dates. January's first Saturday is January 2, so its second is January 9. Each month is calculated independently.

Fifth is not Last

Fifth Mondays, January–March 2027

2027-03-29 only

January and February have only four Mondays and are marked as omitted. Last + Monday instead returns January 25, February 22, and March 29.

Partial months

Second Saturdays, January 10–March 12

2027-02-13 only

January 9 is before the start and March 13 is after the end. Those months have a second Saturday, but it is outside this range. An endpoint that matches the rule is included.

How monthly dates are selected

Find the first matching day of the week in each month. For occurrence n, add 7 × (n − 1) days. If that day number exceeds the month's length, there is no occurrence. Last takes the final matching weekday before the month ends. Finally, keep only dates on or after the start and on or before the end.

“Second Saturday” means the second Saturday that actually occurs in the month, regardless of which day your calendar grid starts on. It does not mean Saturday in the second displayed calendar row. This monthly ordinal interpretation is also described by iCalendar's BYDAY recurrence rules (RFC 5545).

Dates use the proleptic Gregorian calendar for years 0001–9999. Leap years are divisible by 4, except century years must also be divisible by 400. See the U.S. Naval Observatory's leap-year explanation. Results are exact calendar dates and whole counts; no decimal rounding, time zone, or daylight-saving adjustment is involved.

A range may touch up to 1,200 calendar months, including partial first and last months. Every month is included in the result table and CSV; dates are never silently truncated. A valid range with no matches returns zero rather than an input error.

This is a date list for one monthly rule. Public holidays are not moved or excluded, and no events or reminders are added to your calendar. First or Last Monday is different from the first or last business day, which depends on weekends and holidays.

Common questions

Why do Fifth and Last give different lists?

A day of the week occurs four or five times in a month. Fifth returns a date only when there are five. Last returns the fourth or fifth occurrence, whichever is final; the selected date range still applies.

Can I find dates across several years?

Yes. For example, 2011-01-01 through 2021-12-31 with Second + Saturday gives 132 dates. You can select a single month or up to 1,200 touched calendar months.

How do I save the conditions for later?

After calculating, use Copy link and keep the link. The home page's Recent calculations also offers Load inputs within this tab. Both restore the range, occurrence, and day of week; select Calculate to generate the dates again. No account is needed.

Does the CSV contain every result?

Yes. It has one row per checked month, the qualifying date and weekday when present, an inclusion or omission reason, and your original conditions. A spreadsheet may reformat date cells; use text column types on import if you need to preserve the exact YYYY-MM-DD display.