Skip to content
Date & Time

Recurring Date Generator

Turn one start date plus a repeat rule into the full ordered list of dates — daily, weekly, monthly or yearly, with nth-weekday and last-weekday patterns. See the equivalent RRULE and print or share the schedule.

Calculator

weeks
On these weekdays

Leave empty to use the start day.

Ends

Up to 500 dates. Invalid dates (e.g. a 31st in a 30-day month, or Feb 29 in a common year) are skipped, per RFC 5545.

Schedule

Every week · —

Choose a start date and a recurrence rule to see the full schedule.
A reference and planning tool — double-check important dates, figures and official requirements before you rely on them.

About this calculator

This generator expands a single start date plus a recurrence rule into the complete, ordered list of dates it produces, then shows that list as a schedule you can print or share. The rule model mirrors the iCalendar RRULE standard (RFC 5545): a frequency (daily, weekly, monthly or yearly), an interval N ("every N units"), an optional weekday selection for weekly rules, a monthly pattern (the same day of the month, an "nth weekday" such as the 3rd Friday, or the last weekday), and an end condition — after a number of occurrences, or up to and including an end date. Every date is shown with its weekday and in ISO 8601 format (YYYY-MM-DD), alongside the equivalent RRULE string you can drop into a calendar app.

How to read your results

The headline is the number of dates the rule produces, with the first date, the last date and the span in days beside it. Below that, the schedule lists every occurrence in order — its position, weekday and ISO date — and the "occurrences by month" chart shows how the dates cluster across the calendar. The grey RRULE line is the same rule written in RFC 5545 syntax (for example RRULE:FREQ=MONTHLY;BYDAY=3FR;COUNT=12 for "the 3rd Friday of every month, twelve times"). Dates are computed in UTC, so the list never drifts by a day across a daylight-saving change, and the series is capped at 500 dates — if a rule would run longer, you will see the first 500 with a note.

How it's calculated

The engine reads the start date in UTC (Date.UTC) so no daylight-saving transition can move a day. For daily, monthly and yearly rules it walks an occurrence index i = 0, 1, 2 … and builds candidate dates: daily adds i × interval days; monthly advances i × interval months and either keeps the start day-of-month (skipping months that lack it), resolves the nth weekday, or resolves the last weekday; yearly advances i × interval years on the start month and day (skipping 29 February in common years). Weekly rules anchor to the Monday of the start week and step forward interval weeks at a time, emitting each selected weekday. Any candidate before the start date is skipped; any non-existent calendar day is skipped; generation stops at the requested count, at the inclusive UNTIL date, or at the 500-date cap. The result also includes the dates grouped by calendar month and the equivalent RFC 5545 RRULE string. The calculation is a pure function with no clock or network access.

Worked example

Set the start date to 1 January 2026, choose Monthly, the "nth weekday" pattern, the 3rd Friday, and end after 3 occurrences.

The generator returns 2026-01-16, 2026-02-20 and 2026-03-20 — the 3rd Friday of each month — and the RRULE line reads RRULE:FREQ=MONTHLY;BYDAY=3FR;COUNT=3. Because only dates on or after the start are emitted, January's 3rd Friday (the 16th) is the first entry.

Frequently asked questions

What is the RRULE string for?

RRULE is the recurrence-rule syntax from RFC 5545, the iCalendar standard that powers Google Calendar, Apple Calendar, Outlook and most scheduling tools. The generator writes your rule as a single RRULE line (FREQ, INTERVAL, BYDAY, COUNT or UNTIL) so you can paste it into a calendar event or an .ics file and reproduce the exact same series there.

How are impossible dates like the 31st or 29 February handled?

They are skipped, never rolled forward — exactly as RFC 5545 specifies. A monthly "same day" rule starting on the 31st only fires in months that have a 31st (so February, April, June, September and November are skipped). A yearly rule on 29 February only lands in leap years. The generator never silently shifts a missing date to the 1st or the 28th.

How is this different from the Nth Weekday of the Month Finder?

The Nth Weekday Finder answers a single question — what date is, say, the 3rd Thursday of one month. This generator emits the whole recurring series: the 3rd Thursday of every month for as many occurrences (or up to whatever end date) you ask for, plus the equivalent RRULE and a printable schedule.

Is there a limit on how many dates it generates?

Yes — the series is hard-capped at 500 dates. If you choose "until a date" and the rule would produce more than 500 occurrences, the generator returns the first 500 and flags that the rule continues beyond the shown range. Counting by occurrences ("after N") is itself limited to 500.

Which time zone are the dates in?

The dates are calendar dates with no time-of-day or time zone — they are computed in UTC so the arithmetic is stable. A weekly rule with several weekdays is anchored to the Monday of the start date's week (the RFC 5545 default week start), and only dates on or after your start date appear in the list.

Popular scenarios

Popular scenarios

Sources

Reviewed by the YouCalc Team · Last reviewed

Spot a translation issue, a calculation issue, or have a suggestion? Let us know.

More calculators like this. Pick the next one.