Date List Generator

Count out twenty alternating Thursdays on a wall calendar. Somewhere around the third month boundary a page turn eats a week, and by the end you are not sure enough to stop, so you start again from the top.

Company shutdowns, days already booked, anything you want out of the list
dates
Date List Generator — Every Nth Day, Week or Month Between Two DatesBuildFigure

Where the interval is measured from

Days and weeks are simple. The start date is the first entry, the next is that many days later, and it stops at the end date. A three-day interval means every third day, so a 30-day span yields ten dates rather than thirty. Weeks are just multiples of seven, so a two-week interval and a fourteen-day interval produce identical lists. Months are the awkward case, because months are not the same length and "one month later" has no single correct answer. This holds the day-of-month from the start date and recomputes each cycle from it. Starting January 31 gives February 28 or 29, then March 31 again. If each cycle were measured from the previous result, February would drag March back to the 28th and every later date would creep earlier — anchoring the original day is what stops that drift.

Clamp or skip

Something due on the 31st has no 31st in February. Clamping to the last day of the month keeps the count of cycles intact, which is what you want when the promise is "once a month" — rent, a subscription, a standing payment. Skipping means nothing happens that month at all, which is right when the day itself is the condition, such as an inspection that only occurs on the 31st. Neither is more correct in the abstract; it depends on the rule someone wrote. Contracts avoid the question altogether by saying "the last day of the month" outright, which is worth copying. The results panel tells you how many cycles were affected either way.

Filters run after generation

Dates are generated by the interval first, then the weekday filter removes some, then your subtract list and the federal holidays remove more. Knowing that order explains most surprising results. A one-day interval with the Monday-to-Friday filter gives a clean run of working days. A seven-day interval, though, only ever produces one weekday, so filtering for a different one empties the list entirely. For every other Thursday, set the start date to a Thursday and the interval to two weeks; there is no need to filter at all. The federal holiday option is computed from the rules rather than a stored table, and it applies the weekend observance federal offices use, which is why July 4 falling on a Saturday shows up as July 3. It is the federal list and only the federal list — your state and your employer both keep different ones.

Getting it somewhere useful

Commas suit a single input box in another program. CSV adds a header row and splits the number and weekday into their own columns for a spreadsheet. Numbering suits a plan where the cycle count matters. If the list is only going to be fed into something else, the plain ISO format joined by line breaks travels furthest — numbering and weekday suffixes are text that the next tool has to strip back off.

Questions people ask

How do I get twenty biweekly meeting dates?

Set the start date to the first meeting, the interval to 2 and the unit to weeks, push the end date well out, and set the stop-after value to 20. The list ends at twenty and the last entry tells you the date you were really asking about. If instead the end date is fixed, leave the stop-after value high and read the count.

Are holidays removed automatically?

Only if you check the federal holiday box, and only the eleven federal holidays, computed from their rules with the weekend observance applied. Everything else — state holidays, company shutdowns, the Friday after Thanksgiving that many employers close and the federal government does not — has to go in the subtract box yourself.

Can I list the last day of every month?

Set the start date to the 31st of a month that has one, choose a one-month interval, and leave the clamp option on. Months without a 31st fall back to their own last day, so every entry is a month end. Starting from a 30th does not work, because months with 31 days keep the 30th.

How many dates can it produce?

It generates up to 1,000 and then shows however many your stop-after value allows. At a daily interval that is a little under three years. For longer, split the span and run it twice. Drawing a thousand rows also makes a phone browser scroll badly, so a few hundred at a time is the practical size.

Related