Recurring Date Calculator and Schedule Generator

Generate daily, weekly, monthly, quarterly, yearly, working-day, and nth-weekday date lists, then adjust exceptions and export the finished schedule. Your dates stay in your browser and are not sent to Starlight Tools.

Build your schedule

Instant examples

Pattern
The first result is the first matching date on or after this date.

Choose how the unadjusted schedule is formed.
For example, 2 means “repeat every 2 months.”

If this day does not exist, the month-end policy below applies.

Range
The end date is inclusive. At most 500 dates are generated.

Exceptions and invalid dates
Example: February 31 becomes February 28/29, is skipped, or moves into March.
A working date avoids the weekend and supplied exclusion lists.
Enter ISO dates (YYYY-MM-DD), separated by commas, spaces, or new lines. Holidays are not added automatically.

Results

Preparing today’s example
The schedule will update when the controls are ready.

Advertisement

How to use the schedule generator

  1. Choose a start date and recurrence type, then set the interval and any pattern-specific fields.
  2. End after a number of occurrences or on an inclusive end date.
  3. Choose how invalid month dates and non-working dates should be resolved.
  4. Review original and adjusted dates, then copy the result or download CSV or ICS.

Recurrence types

Fixed intervals count calendar days. Weekly rules can use one or more weekdays. Working-day rules generate Monday through Friday before supplied holiday exclusions are applied. Monthly and quarterly rules use a numeric day; nth-weekday rules cover patterns such as the second Tuesday or last Friday; yearly rules preserve the starting month and day.

Boundaries and month-end behavior

The first unadjusted match must be on or after the start date, and a selected end date is inclusive. For a missing day such as February 31 or February 29 in a non-leap year, choose the last valid day, skip that period, or move forward by the overflow amount. An exception adjustment is shown beside its original rule date.

Date-only behavior

The calculator uses Gregorian calendar dates without times or time zones. Daylight saving changes therefore cannot move a result. ICS exports are all-day events; choose their display calendar after importing them.

Recurrence formulas and logic

For a fixed interval, occurrence n is D(n) = D(0) + n × k days, where n starts at zero, D(0) is the start date, and k is the interval. Thus 1 January 2026 every 14 days gives D(2) = 1 January + 2 × 14 = 29 January 2026. Weekly intervals use the same idea in seven-day blocks, anchored to the Monday of the start week, then retain each selected weekday.

For the qth weekday of a month, day = 1 + ((w − w1 + 7) mod 7) + 7(q − 1). Here w is the requested weekday number (Sunday 0 through Saturday 6) and w1 is the first day of the month's weekday number. September 2026 starts on Tuesday, so its second Tuesday is 1 + ((2 − 2 + 7) mod 7) + 7 = 8.

For the last weekday, let L be the month's final date. The result is L − ((weekday(L) − w + 7) mod 7) days. Monthly and yearly rules first form a nominal year-month-day. If that nominal date is invalid, the selected policy either omits it, clamps it to the month's final day, or constructs it by moving the excess days into the following month. The same rule resolves a yearly recurrence from February 29.

Worked recurrence examples

Every 14 days

Input: start 2026-01-01; interval 14 days.

Formula: start + n × 14 days.

First four outputs: 2026-01-01, 2026-01-15, 2026-01-29, 2026-02-12.

Every other Friday

Input: start 2026-01-01; every 2 weeks; Friday selected.

Logic: keep Fridays in alternating Monday–Sunday week blocks.

First four outputs: 2026-01-02, 2026-01-16, 2026-01-30, 2026-02-13.

Monthly on the 31st

Input: start 2026-01-31; day 31; monthly.

Invalid-date policyFirst four outputs
Last valid day2026-01-31, 2026-02-28, 2026-03-31, 2026-04-30
Skip2026-01-31, 2026-03-31, 2026-05-31, 2026-07-31
Move forward2026-01-31, 2026-03-03, 2026-03-31, 2026-05-01

Second Tuesday of each month

Input: start 2026-07-16; second Tuesday; monthly.

First four outputs: 2026-08-11, 2026-09-08, 2026-10-13, 2026-11-10. The July match is excluded because it is before the start date.

Last Friday of each month

Input: start 2026-07-01; last Friday; monthly.

First four outputs: 2026-07-31, 2026-08-28, 2026-09-25, 2026-10-30.

Annual recurrence from February 29

Input: start 2024-02-29; yearly.

Invalid-date policyInitial outputs
Last valid day2024-02-29, 2025-02-28, 2026-02-28, 2027-02-28
Skip2024-02-29, 2028-02-29, 2032-02-29
Move forward2024-02-29, 2025-03-01, 2026-03-01, 2027-03-01

Calculation method and assumptions

Calendar: proleptic Gregorian calendar. Precision: date-only, with no time zone or time of day. Boundaries: the first rule date is on or after the start; the end date is inclusive; final adjusted dates must remain inside the range. Resolution order: construct the recurrence, resolve an invalid month day, then apply the non-working-date policy. The output limit is 500 dates.

ICS files follow the iCalendar structure described by RFC 5545. This tool writes separate all-day VEVENT records rather than an RRULE because exclusions and adjusted dates may not be representable by one recurrence rule.

Reviewed and updated: 17 July 2026 by the Starlight Tools editorial team (Starlight Robotics).

Frequently asked questions

Does the start date count as occurrence one?

Yes for fixed day, year, and qualifying working-day rules. Weekly, monthly day, and nth-weekday rules use the first matching date on or after the start date.

Is the end date inclusive?

Yes. A date equal to the chosen end date is included. Dates moved beyond that boundary by an exception rule are not included.

What happens to the 31st in February?

Choose one of three explicit policies: use February's last valid day, skip February, or move forward by the overflow amount into March.

How does February 29 repeat in non-leap years?

The same invalid-date policy applies: use February 28, skip the non-leap year, or move forward to March 1.

Can nth-weekday mode return a date before the start date?

No. The generator discards an nth-weekday match before the start date and begins with the next qualifying month.

Can a weekly schedule include multiple weekdays?

Yes. Select any combination of Sunday through Saturday. The week interval is anchored to the Monday of the start date's week.

How are weekends, holidays, and exclusions handled?

You can keep, skip, move forward, or move backward from non-working dates. Add holiday and custom exclusion dates yourself; the calculator does not assume a country's holiday calendar.

Do time zones or daylight saving time change the results?

No. Results are date-only Gregorian calendar values calculated without a time of day, so time zones and daylight saving transitions do not shift them.

Which export formats are available?

You can copy the rule summary or raw ISO date list and download CSV or ICS. The ICS file uses separate all-day events so adjusted dates remain exact.

Does the generator store my schedule?

No. The schedule is generated locally in your browser and is not sent to Starlight Tools.

Important note

Holiday calendars vary by country, region, employer, and year. This calculator adjusts only the holiday and exclusion dates you supply. Review contractual, payroll, compliance, and regulated deadlines against the authoritative calendar or governing rules.

Explore more tools