Skip to main content

Date Range Generator

Generate the list of dates between a start and an end date, stepping by days, weeks, months or years, with the weekday of each date.

Embed this widget

Customize the result, check the live preview, then copy the code.

Preview

Embed code type

Code to copy

Responsive and automatically resized by Bethemesh.

Was this tool useful?

How does this tool work?

Need every date in November, every Monday of a quarter or one date per month until the end of the year? The date range generator starts at the start date, moves forward by a fixed step — N days, N weeks, N months or N years — and stops as soon as the end date is passed. Each date is numbered and shown with its weekday, ready to paste into a schedule, a spreadsheet or a calendar.

Date number k is the start date plus k times the interval, for k = 0, 1, 2… as long as the result does not pass the end date. The start date is therefore always first, and the end date only appears if it falls exactly on a step.

With days and weeks, the step is a fixed number of days (a week is 7 days), so the weekday stays the same. With months and years, the day of the month is kept; if it does not exist in the target month, it is moved to the last day of that month (31 January → 28 or 29 February). Because each date is computed from the start date, the 31st comes back as soon as a month allows it: 31 March, 31 May…

The list is capped at 1,000 dates to stay readable: beyond that, only the first 1,000 are shown. Calculations use plain Gregorian calendar dates, with no time of day or time zone.

How to use this tool

  1. Pick the start date

    It is the first date in the list and the anchor for all the others.

  2. Pick the end date

    No date goes beyond it; it is included if a step lands exactly on it.

  3. Set the interval and unit

    For example 1 day for every day, 2 weeks for a fortnightly rhythm, 3 months for quarterly dates.

  4. Review the list

    The total number of dates is shown with each date and its weekday.

How each date in the range is computed

Every date derives from the start date, never from the previous one, so a month-end adjustment never carries over.

Date number k

dₖ = d₀ + k × n units, while dₖ ≤ end

For k = 0, 1, 2… and at most 1,000 dates.

Day of month for monthly steps

day = min(day of d₀, days in target month)

Moves the 31st to the 30th or to 28/29 February when the month is shorter.

d₀
start date
n
chosen interval, in the chosen unit
J(m)
number of days in month m (28 to 31)

The iCalendar format (RFC 5545), used by most calendar apps, does the opposite: it skips non-existent dates such as 31 February instead of moving them to the end of the month.

Use cases

Build a date column for a spreadsheet

Generate every day of a month or every Monday of a quarter and paste the list into your sheet.

Plan monthly due dates

One date per month from 31 January to 31 December, with month ends adjusted correctly.

Spread sessions over a period

A class every 14 days between the start of term and the holidays, with the weekday visible.

Check an existing schedule

Compare the generated list with the dates in a contract or payment plan to spot a gap.

Examples

Month ends without drift

The 31st comes back in March and May because each date is computed from 31 January.

Input

From 2026-01-31 to 2026-06-30, every 1 month

Result

6 dates: 31 Jan, 28 Feb, 31 Mar, 30 Apr, 31 May, 30 Jun

Every 3 days

The end date is included because it falls exactly on a step.

Input

From 2026-10-01 to 2026-10-10, every 3 days

Result

4 dates: 1, 4, 7 and 10 October 2026

Across the new year

All Mondays, like the start date.

Input

From 2026-12-21 to 2027-01-11, every week

Result

21 Dec, 28 Dec, 4 Jan, 11 Jan

Tips and best practices

  • To get every Monday in a period, choose a Monday as the start date and a step of 1 week.
  • If you know the number of occurrences rather than the end date, the recurring dates generator is a better fit.
  • To leave out weekends or count working days, use the business days calculator; this generator lists every calendar date.
  • A start date on the 29th, 30th or 31st with a monthly step gives uneven gaps between dates: that is expected, months have different lengths.

Sources and references

Frequently asked questions

Is the end date included?

Yes, if it falls exactly on a step. From 1 to 9 October every 3 days, the list stops at 7 October, because the next step (10 October) passes the end.

What happens to the 31st with a monthly step?

It moves to the last day of shorter months (30 April, 28 or 29 February) and returns to the 31st in months that have one, because each date is computed from the start date.

How is 29 February handled with a yearly step?

Common years give 28 February, and 29 February returns in the next leap year.

How many dates can I generate?

Up to 1,000. Beyond that the list is cut to the first 1,000 dates; use a larger interval or split the period.

How is it different from the recurring dates generator?

Here the series stops at an end date. The recurring dates generator stops after a chosen number of occurrences, with no end date.

Do times or time zones play a role?

No. The tool works with plain calendar dates (day, month, year), so daylight saving time can never shift a date.

Related tools

Tools similar or complementary to this one.

Similar tools

Add or subtract days, weeks, months or years from a date and get the resulting date with its day of the week.

Dates & timeUse this tool

Count the business days between two dates and shift a date by a number of working days, for a Monday–Friday or other working week.

Dates & timeFeaturedUse this tool