Skip to content

Monthly Date Rule Generator

Pick a day of the month and how the rule should behave in months that don't have that day (constrain to the last day, or skip the month).

If the day doesn't exist that month
Always want the actual last day, never a fixed number? See End-of-Month Recurrence Planner.

Worked example

A rule pinned to day 31 under the constrain policy, starting January 31, 2027, generates January 31 first, then February 28, pulled back to that month's own last real day since February never reaches 31, then March 31 once a full 31-day month comes around again. The same rule under the reject policy instead produces no occurrence at all for February, skipping straight from January 31 to March 31 with a genuine gap in between rather than substituting a nearby date. Neither policy is more correct than the other in the abstract. They simply answer the question of what a nonexistent day-31 month should do in two different, equally valid ways.

Common mistakes

  • Choosing constrain when what is actually needed is a strict day-31 rule that genuinely skips a short month entirely. Reject is the correct policy for that case.
  • Assuming the generated dates for day 29, 30, or 31 will always land on that exact day number. Under constrain, a shorter month always substitutes its own last real day instead.

Limitations

The generated preview is bounded to 500 occurrences or 5 years, whichever limit is reached first, keeping the output fast to generate and easy to review in full.

Frequently asked questions

What happens in February under the reject policy?
Nothing. That month produces no occurrence at all and is skipped entirely from the generated list, rather than substituting a nearby date.
Which policy should I choose if I am not sure?
Constrain is the more common choice for most billing and reminder use cases, since it guarantees exactly one occurrence every month. Reject is better when a month genuinely having no occurrence is the correct outcome.