I often have to generate a sequence of calendar dates so I created this simple online utility that does it for me. It lets you generate however many calendar dates you need starting from any date with any time interval between the dates. It works in the browser and is powered by alien technology from the future.

Calendar Date Generator Options

Start Date and Interval
Order, Count, Separator
Calendar Date Format
Calendar date format.
Print full-digit date parts.
Switch between 12hr and 24hr time formats.

Calendar Date Generator Examples (click to try!)

List of Dates in 2021
In this example, we generate a list of 13 calendar dates starting from the beginning of the year 2021 (2021-01-01 00:00:00). We increase each date by 1 month and 6 hours and at the 13th iteration reach the year 2022. We use padding for the date and time components, so that months, days, hours, minutes, and seconds are always two digits wide. We print all dates to the screen in the format "YYYY/MM/DD hh:mm:ss" and separate them by a newline character.
2021/01/01 00:00:00
2021/02/01 06:00:00
2021/03/01 12:00:00
2021/04/01 18:00:00
2021/05/02 00:00:00
2021/06/02 06:00:00
2021/07/02 12:00:00
2021/08/02 18:00:00
2021/09/03 00:00:00
2021/10/03 06:00:00
2021/11/03 12:00:00
2021/12/03 18:00:00
2022/01/04 00:00:00
Start calendar date. Format: YYYY-MM-DD HH:MM:SS (time part is optional).
Interval between calendar dates. Format examples: "1year", "3mo 4d", "2h 5min 8s".
Increase Calendar Dates
How many calendar dates to generate?
Calendar date separator.
Use Date Padding
Use 12 Hour Clock
Returning to 20th Century
In this example, we're counting down to the start of the 20th century. We begin the countdown at the last second of the 20th century (2000/12/31 23:59:59) and go back in time by 5 years, 1 month, 1 day, 1 hour, 1 minute, and 1 second. We output a series of 20 calendar days, separate them by a semicolon, and format them as "MM/DD/YYYY hh:mm:ss" without padding.
12/31/2000 23:59:59; 12/31/1995 22:58:58; 12/31/1990 21:57:57; 12/31/1985 20:56:56; 12/31/1980 19:55:55; 12/31/1975 18:54:54; 12/31/1970 17:53:53; 12/31/1965 16:52:52; 12/31/1960 15:51:51; 12/31/1955 14:50:50; 12/31/1950 13:49:49; 12/31/1945 12:48:48; 12/31/1940 11:47:47; 12/31/1935 10:46:46; 12/31/1930 9:45:45; 12/31/1925 8:44:44; 12/31/1920 7:43:43; 12/31/1915 6:42:42; 12/31/1910 5:41:41; 12/31/1905 4:40:40
Start calendar date. Format: YYYY-MM-DD HH:MM:SS (time part is optional).
Interval between calendar dates. Format examples: "1year", "3mo 4d", "2h 5min 8s".
Decrease Calendar Dates
How many calendar dates to generate?
Calendar date separator.
Use Date Padding
Use 12 Hour Clock
Exploring Future
In this example, we generate a sequence of nine calendar days in the far future. Even if aliens come to Earth, we still hope that people use the 12-hour time format, so we activate it in the options. Each day is incremented by 50 years, 10 days, and 59 minutes and we quickly go from the year 5600 to the year 6000. In addition to using am/pm indicators in the time part, we use short three-letter month names and short days of the week in the date part.
Mon, Feb 28, 5600 06:20:40 pm
Thu, Mar 10, 5650 07:19:40 pm
Sat, Mar 20, 5700 08:18:40 pm
Mon, Mar 30, 5750 09:17:40 pm
Wed, Apr 09, 5800 10:16:40 pm
Fri, Apr 19, 5850 11:15:40 pm
Mon, Apr 30, 5900 00:14:40 am
Wed, May 10, 5950 01:13:40 am
Sat, May 20, 6000 02:12:40 am
Start calendar date. Format: YYYY-MM-DD HH:MM:SS (time part is optional).
Interval between calendar dates. Format examples: "1year", "3mo 4d", "2h 5min 8s".
Increase Calendar Dates
How many calendar dates to generate?
Calendar date separator.
Use Date Padding
Use 12 Hour Clock
Friday the 13th
In this example, we decided to find all Fridays the 13ths in 2026. For this, we entered the start date of 2026/1/13 and the calendar interval of 1 month. We don't need the clock time part in the output, so we use a custom date format "dddd, DD MMMM YYYY", where dddd is the full day of week name, DD is the date, MMMM is the full month name, YYYY is the year. As a result of our research, we see that in 2026, Friday the 13th happens 3 times.
Tuesday, 13 January 2026
Friday, 13 February 2026
Friday, 13 March 2026
Monday, 13 April 2026
Wednesday, 13 May 2026
Saturday, 13 June 2026
Monday, 13 July 2026
Thursday, 13 August 2026
Sunday, 13 September 2026
Tuesday, 13 October 2026
Friday, 13 November 2026
Sunday, 13 December 2026
Start calendar date. Format: YYYY-MM-DD HH:MM:SS (time part is optional).
Interval between calendar dates. Format examples: "1year", "3mo 4d", "2h 5min 8s".
Increase Calendar Dates
How many calendar dates to generate?
Calendar date separator.
Custom output date format. Notation: YYYY/YY – year, MMMM/MMM/MM – month, DD – day, dddd/ddd – day of week, hh – hour, mm – minute, ss – second.
Use Date Padding
Use 12 Hour Clock
Generate Only Clock Time
This example skips the calendar part and generates only the clock part of the day in 40-second increments. The start date is set to "0 00:00:00" (year zero, midnight) and the custom output datetime format is set to "hhhmmmsss". This format means print hours followed by the letter h, print minutes followed by the letter m, and print seconds followed by the letter s. Notice that the format string doesn't contain date-related components (years, months, days) so date isn't used in the output and only time is printed to the screen. Hours, minutes, and seconds are padded with zeros and separated by the pipe character. The time is incremented 100 times.
00h00m00s|00h00m40s|00h01m20s|00h02m00s|00h02m40s|00h03m20s|00h04m00s|00h04m40s|00h05m20s|00h06m00s|00h06m40s|00h07m20s|00h08m00s|00h08m40s|00h09m20s|00h10m00s|00h10m40s|00h11m20s|00h12m00s|00h12m40s|00h13m20s|00h14m00s|00h14m40s|00h15m20s|00h16m00s|00h16m40s|00h17m20s|00h18m00s|00h18m40s|00h19m20s|00h20m00s|00h20m40s|00h21m20s|00h22m00s|00h22m40s|00h23m20s|00h24m00s|00h24m40s|00h25m20s|00h26m00s|00h26m40s|00h27m20s|00h28m00s|00h28m40s|00h29m20s|00h30m00s|00h30m40s|00h31m20s|00h32m00s|00h32m40s|00h33m20s|00h34m00s|00h34m40s|00h35m20s|00h36m00s|00h36m40s|00h37m20s|00h38m00s|00h38m40s|00h39m20s|00h40m00s|00h40m40s|00h41m20s|00h42m00s|00h42m40s|00h43m20s|00h44m00s|00h44m40s|00h45m20s|00h46m00s|00h46m40s|00h47m20s|00h48m00s|00h48m40s|00h49m20s|00h50m00s|00h50m40s|00h51m20s|00h52m00s|00h52m40s|00h53m20s|00h54m00s|00h54m40s|00h55m20s|00h56m00s|00h56m40s|00h57m20s|00h58m00s|00h58m40s|00h59m20s|01h00m00s|01h00m40s|01h01m20s|01h02m00s|01h02m40s|01h03m20s|01h04m00s|01h04m40s|01h05m20s|01h06m00s
Start calendar date. Format: YYYY-MM-DD HH:MM:SS (time part is optional).
Interval between calendar dates. Format examples: "1year", "3mo 4d", "2h 5min 8s".
Increase Calendar Dates
How many calendar dates to generate?
Calendar date separator.
Custom output date format. Notation: YYYY/YY – year, MMMM/MMM/MM – month, DD – day, dddd/ddd – day of week, hh – hour, mm – minute, ss – second.
Use Date Padding
Use 12 Hour Clock
Weekdays
This example prints a list of 7 days from January 3000. It increases each date by 1 day, 3 hours, 3 minutes, and 3 seconds for one week. It outputs dates in the "dddd" format that prints names of all weekdays. For time, it uses the "at hh:mm:ss" format that displays the word "at" followed by hours, minutes, and seconds, and it's displayed in 12-hour digital clock format with two digits per time value and am and pm indictors.
Wednesday at 00:00:00 am
Thursday at 03:03:03 am
Friday at 06:06:06 am
Saturday at 09:09:09 am
Sunday at 12:12:12 pm
Monday at 03:15:15 pm
Tuesday at 06:18:18 pm
Start calendar date. Format: YYYY-MM-DD HH:MM:SS (time part is optional).
Interval between calendar dates. Format examples: "1year", "3mo 4d", "2h 5min 8s".
Increase Calendar Dates
How many calendar dates to generate?
Calendar date separator.
Custom output date format. Notation: YYYY/YY – year, MMMM/MMM/MM – month, DD – day, dddd/ddd – day of week, hh – hour, mm – minute, ss – second.
Use Date Padding
Use 12 Hour Clock

How Does This Calendar Date Generator Work?

This linear calendar date series generator works entirely in your browser and is written in JavaScript. The sequence of calendar dates starts from the startDate and increases by the interval amount specified in the options. It operates with universal (UTC) dates and times and uses JavaScript language's built Date and Date.UTC objects. The startDate option may contain either date and time parts (in YYYY-MM-DD hh:mm:ss format) or just the date part (in YYYY-MM-DD format). The program uses a smart parsing algorithm to extract all the date and time components from the startDate value. For the date part, it finds the year, month, and day components, and for the time part, it finds hours, minutes, and seconds components. If the time part has an am/pm indicator, then it converts the hours component to a 24-hour clock. To start generating a list of dates, it creates the variable firstDate by composing Date and Date.UTC objects: new Date(Date.UTC(y, mo, d, h, mi, s)), where y is year, mo is month, d is day, h is hour, mi is minute, s is second. This makes sure that the firstDate object uses the UTC timezone. Then, in a similar way, it parses the interval option and sets up the dateInterval object. This object contains the parsed interval in years, months, days, hours, minutes, and seconds. If you are generating a descending list of calendar dates, all components of the dateInterval object are turned into negative numbers via multiplying them by -1. The date generator runs a for loop count times (number of dates in the output, specified in options) and each next date is obtained by calling the getNextDate() function. This function creates a variable nextDate = new Date(prevDate.getTime()) and then updates individual date and time components in it to the next value by calling nextDate.setUTCX(prevDate.getUTCX() + dateInterval['X']), where X is year, month, day, hour, minute, and second. After replacing all the nextDate components, the function saves the result in another variable called newDate and replaces the prevDate object with the nextDate object. Next, the date in newDate is formatted according to the desired output format. The formatting is done by repeatedly calling the format.replace(X, newDate.getUTCX()) function with X being year, month, day, hour, minute, and second. The formatted string is then pushed onto allStrDates stack and when the for loop finishes, the stack elements are joined into a long string via the allStrDates.join(separator) function. Finally, the string is sent to the output area and is printed on your screen.

Created by Browserling

This calendar date generator was created by me and my team at Browserling. Behind the scenes, it's actually powered by our programmer tools that are used by millions of people every month. Browserling itself is an online cross-browser testing service powered by alien technology. Check it out!

Secret message: If you love my tools, then I love you, too! Use coupon code TOOLLING to get a discount at my company.