What "one month later" actually means (dates are harder than they look)
What is 31 January plus one month? There is no single right answer. How month arithmetic works, why software clamps dates, and where the edge cases bite.
By ToolsNow · Published
What date is one month after 31 January?
Take a moment, because every candidate answer has a problem. 28 February skips three days’ worth of “length”. 3 March, which is 31 days later, isn’t “the same day next month”. And 31 February doesn’t exist. Any answer requires a decision rather than just arithmetic, and different systems decide differently.
Days are easy; months aren’t
Adding days to a date has exactly one right answer: 30 days after 31 January is 2 March, full stop. Days are all the same length, so the arithmetic is mechanical.
Months aren’t the same length. 28, 29, 30 or 31 days, depending. So “add one month” can’t mean “add a fixed amount of time”. What people intuitively mean is “same day-of-month, next month”, and that works perfectly for days 1 to 28. It breaks for the 29th, 30th and 31st whenever the target month is shorter than the source month.
The two standard answers
Clamping, sometimes called snapping: if the target day doesn’t exist, use the last day of the target month. One month after 31 January is 28 February, or the 29th in a leap year. Most calendar apps, spreadsheet functions and date libraries do this, and it matches how humans schedule. “The rent is due on the 31st” means the last day of the month in February, not a spillover into March.
Rolling over: keep the arithmetic literal and let the overflow spill forward, so 31 January plus one month becomes 2 or 3 March. Almost nothing intends this, but plenty of software produces it by accident. Naive implementations increment the month number and leave the day alone, which creates “31 February”, and the date system then helpfully normalises that into March.
The date tools here clamp on purpose, and say so.
Clamping isn’t reversible, and isn’t associative
Two consequences catch people out.
It loses information. 28 February minus one month is 28 January, not the 31 January you might have started from. Three different start dates, the 29th, 30th and 31st of January, all clamp to the same 28 February, so the reverse journey has no way of knowing which one you meant.
Any system that schedules “same day next month” repeatedly, like a subscription billed on the 31st, drifts to the 28th after the first February and stays there, unless it remembers the original anchor day separately. Real billing systems store “bill on day 31” as an intent for exactly that reason, so February doesn’t permanently reset it.
Order matters. Add one month then one day to 31 January: clamp to 28 February, then 1 March. Add one day then one month: 1 February, then 1 March. Same answer here, but other date combinations give you two different results depending on the order. Compound offsets like “1 month and 15 days” are only well-defined once you fix the order of operations, and conventionally months go first.
Where this shows up: ages and anniversaries
An age of “1 month” for a baby born 31 January is this same problem wearing different clothes. Measured on 1 March, is the baby one month and one day old? Whole-month counting says yes: born 31 January, the first month completes on 28 February by clamping, so on 1 March the age is one month and one day.
Building the age calculator on this site showed how easy this is to get wrong. An early implementation borrowed days from February the naive way and produced a negative day count, an age of “1 month, −2 days”, for exactly this birthday. The fix was to count whole months with clamping and then count the leftover days, plus a test asserting that the age calculation and the next-birthday calculation can never disagree with each other, since both have to make the same clamping decision.
The same convention question decides when a 29 February birthday falls in a common year, the 28th or the 1st, which legally varies by country. And when a contract signed 31 August reaches its six-month point, which is 28 February by clamping.
The takeaway
“Add a month” is a convention, not a computation. The clamping convention matches human intent nearly always, and the price is that it’s lossy.
So the right mental model is: same day next month, or the closest that exists, and never trust it to reverse. When a date calculation near a month-end matters, check what the specific system does with the 29th, 30th and 31st. That’s where every implementation shows its hand.
Published by ToolsNow. Read how tools and sources are checked.
Found a mistake or an outdated detail? Send a correction with the article title and the detail to review.