Quick answer

Generate dates from a stable rule and treat holidays and skips as separate exceptions. A hand-maintained list of dates decays within one cycle.

Weekly intervals are stable

Anything expressed in days or weeks lands on a predictable weekday forever. Every 14 days from a Tuesday is always a Tuesday. This makes weekly and fortnightly rules easy to timetable, easy to remember and easy to verify.

If you have a choice, prefer them. A four-week cycle gives thirteen occurrences a year instead of twelve, keeps the weekday fixed, and avoids every complication that monthly rules introduce.

Use this guide with the right tool: Open the Recurring Date Calculator for the next occurrence in a repeating day, week, month or year schedule. If the question shifts, compare it with the Add Months to Date Calculator or the Add Years to Date Calculator.

A blank wall calendar with a pen
Weekly intervals are stable — monthly rules carry the end-of-month problem.

Monthly rules carry the end-of-month problem

A monthly rule keeps the day number and moves the month, so it drifts across weekdays and hits the short-month problem whenever the anchor day is 29, 30 or 31. A schedule anchored on the 31st exists in only seven months of the year.

The correct handling anchors on the original day number and clamps per occurrence — 31 January, 28 February, 31 March — rather than continuing from each clamped result, which would migrate the whole schedule to the 28th permanently. Any implementation that gets this wrong fails silently and is hard to notice.

Nth-weekday rules

"The second Tuesday of each month" is a different kind of rule and often the better one for meetings. It keeps the weekday, never hits a short-month problem, and moves between the 8th and the 14th, which is predictable enough to plan around.

The one edge case is 'the fifth Friday', which does not exist in every month. Rules using a fifth occurrence need an explicit fallback — usually the last occurrence instead.

Exceptions belong outside the rule

Holidays, shutdowns and one-off skips interrupt a sequence without changing what the sequence is. Model them that way: generate the full series from the rule, then mark individual occurrences as cancelled or moved.

Editing the rule to route around an exception is what produces schedules nobody can maintain. Six months later the rule no longer describes the pattern, and the next person has to reverse-engineer the intent from a list of dates.

Worked example

A schedule anchored on 31 January 2026 and repeating monthly gives 28 February, 31 March, 30 April, 31 May — the original day number reasserting itself each month. Continuing from each clamped result instead gives 28 February, 28 March, 28 April, and the schedule has permanently moved to the 28th.

Anchored on 31 January 2026, a monthly schedule gives 28 February, 31 March, 30 April and 31 May, because the anchor day reasserts itself each month. Anchor your own schedule the same way instead of continuing from a clamped February date.

The fifth Friday, worked through a year

The fifth-weekday edge case above deserves a full year of arithmetic, because the fallback fires more often than the rule does. Take 'the fifth Friday of the month' through 2027. A fifth Friday exists in only five months: January, landing on 29 January; April, on 30 April; July, on 30 July; October, on 29 October; and December, on 31 December. In the other seven months the rule as stated generates nothing at all, and a schedule built on it silently produces five dates a year instead of twelve unless a fallback was agreed in advance.

Apply the usual fallback — the last Friday when there is no fifth — and the full 2027 series reads: 29 January, 26 February, 26 March, 30 April, 28 May, 25 June, 30 July, 27 August, 24 September, 29 October, 26 November, 31 December. Two things are worth noticing. The dates swing between the 24th and the 31st of the month, a full week of variation, so anything booked against 'roughly the same date each month' will drift within that window. And the gaps between consecutive occurrences are only ever 28 or 35 days, alternating irregularly — 28, 28, 35, 28, 28, 35, 28, 28, 35, 28, 35. Anyone budgeting or rostering against this schedule is really working to a four-week rhythm with an extra week inserted four times a year, and the inserted weeks are visible a year ahead if the series is generated rather than discovered month by month.

The monthly-anchor rules have their own year-dependence, visible across the same boundary. A schedule anchored on 29 January and repeating monthly gives, in 2027, 28 February — clamped, because 2027 has no 29 February — and then 29 March, the anchor reasserting itself as the worked example showed. Run the identical rule from 29 January 2028 and February needs no clamp at all: 29 February 2028 exists, the sequence passes through it untouched, and 29 March follows as before. The rule did not change; the year did. Any monthly rule anchored on the 29th, 30th or 31st is really a family of sequences, one per year-shape, and generating it for a single year proves nothing about the next.

The practical conclusion is about publication rather than arithmetic. A recurring rule should be issued with its generated dates for at least a year ahead attached — the rule for regeneration, the list for use. The list is where fallback months, clamp months and 35-day gaps can be seen and planned around while there is still time to react, rather than in the week the occurrence was supposed to happen. Generate the list from the rule, never maintain it by hand, and regenerate it whenever the rule or an exception changes; the two artefacts together are the schedule, and either one alone will eventually mislead someone.

Set against the article's opening advice, the comparison is instructive. The same Friday meeting run as a plain four-week cycle from 29 January 2027 gives thirteen occurrences — 29 January, 26 February, 26 March, 23 April, 21 May, 18 June, 16 July, 13 August, 10 September, 8 October, 5 November, 3 December and 31 December — every gap exactly 28 days, no fallback, no clamp, no month in which the rule generates nothing. The fifth-Friday rule and the four-week rule both describe 'a Friday roughly monthly', but one needs two patches to survive a year and the other needs none, and the four-week version holds its weekday by construction. Where the choice is free, the generated lists make the decision for you: pick the rule whose list has no surprises in it.

Common mistakes to avoid

  • Continuing a monthly sequence from each clamped date. Anchor on the original day number every time, or the schedule migrates and never recovers.
  • Using a monthly rule for a timetabled meeting. It drifts across weekdays. A four-week rule keeps the day fixed.
  • Building exceptions into the interval. Generate from a clean rule and mark exceptions separately, or the schedule becomes unmaintainable.

Use the right calculator

The Recurring Date Calculator finds the next occurrence in a repeating schedule, the Add Months to Date Calculator adds months, and Add Years to Date Calculator adds years.

Recurring Date Calculator
Date LabRecurring Date Calculatorthe next occurrence in a repeating day, week, month or year schedule
Add Months to Date Calculator
Date LabAdd Months to Date Calculatora calendar date shifted forward by complete months
Add Years to Date Calculator
Date LabAdd Years to Date Calculatora calendar date shifted forward by complete years
Private by default: the anchor dates and intervals you enter are calculated in your browser, with no account required and nothing sent to a server.

Frequently asked questions

What happens to a 'fifth Friday' rule?

Some months have no fifth Friday. Define a fallback — usually the last Friday — or those months are silently skipped.

Should recurring dates avoid weekends?

Only if the rule says so. If they should, decide whether to move forward or backward and apply it consistently.

How far ahead should I generate?

Far enough to be useful, close enough to be accurate. Regenerate from the rule rather than extending a stored list.