Learn how date addition handles the 29th, 30th, and 31st, why operation order matters, and when to use constrained or rejecting rules.
Key takeaways
- Adding one calendar month keeps the day when possible and needs a rule when that day does not exist.
- A constrained rule uses the last valid day; a rejecting rule asks the user to resolve the invalid date.
- Adding months and days in a different order can produce a different valid result.
A calendar month has no fixed day length
Adding one month means advancing to the corresponding position in the next calendar month, not adding 30 days. January 15 plus one month is February 15. January 31 creates a harder question because February has no 31st.
This is why a date-plus-months result must identify its overflow policy. The policy is part of the calculation, just like the starting date and amount added.
Constrain or reject an impossible target date
Under a constrained rule, an out-of-range day is moved to the last valid day of the target month. January 31 plus one month becomes February 28 in a common year or February 29 in a leap year. Under a rejecting rule, the operation returns an error and asks the user or business rule to choose what happens next.
Temporal PlainDate uses a constrained overflow behavior by default and also supports rejection. Neither is universally right for every contract or schedule. Constrain is convenient for general planning; reject is useful when silently changing the day would hide a data problem.

Operation order can change the result
Calendar arithmetic is not always commutative. Adding one month and then several days may differ from adding the days first and then the month because the first step can land on a month-end boundary. MDN's Temporal documentation demonstrates that ordered calendar operations preserve each intermediate result.
If a rule says 'one month and ten days,' confirm whether it defines a sequence or a single calendar duration. A calculator should apply and display one documented order rather than pretending all interpretations are identical.

Recurring monthly dates need their own policy
A recurring event starting on the 31st can use the last day of each month, skip months without a 31st, or move to another business day. Those rules create different schedules after February. The initial date addition does not automatically define all future recurrences.
Write the recurrence in plain language: 'last calendar day of each month' is more durable than 'repeat monthly from January 31.' For payments, notices, subscriptions, or legal deadlines, use the agreement and jurisdiction rather than a generic default.

Subtracting months has the same boundary problem
Moving backward from a 31-day month into a shorter month also needs an overflow rule. A constrained subtraction may land on the last valid day. Round-tripping is therefore not guaranteed: adding one month to January 31 and then subtracting one month from February 28 can produce January 28, not the original date.
If preserving an original anchor matters, store that anchor separately instead of deriving each recurrence from the previous constrained result. Calculate every occurrence from the original rule.
How to report a date-addition result
Save the start date, duration components, operation order, calendar, overflow policy, and final date. Use an unambiguous format such as YYYY-MM-DD when the result moves between systems. If weekends or holidays can move the date again, treat that as a separate adjustment and name the calendar used.
For ordinary planning, the constrained result is easy to understand. For high-stakes decisions, verify the rule with the organization responsible for the deadline before acting on the output.
Sources and review notes
This guide explains calculator methods and planning context. It is not presented as medical, veterinary, legal, school, pension, tax, or financial advice, and no professional review is claimed unless it is explicitly documented.
- Temporal PlainDate add()MDN Web Docs
- Temporal PlainDate DocumentationTC39
- Calculation MethodologyAge Finder Online
Frequently asked questions
What is January 31 plus one month?
Under a common constrained rule it is the last valid day of February—February 28 or 29. A rejecting rule would instead flag that February 31 does not exist.
Is adding one month the same as adding 30 days?
No. A calendar month follows month positions and can span 28 to 31 days; 30 days is a fixed duration.
Why did adding and then subtracting a month change my date?
The first operation may have been constrained to a shorter month's final day. The reverse operation then starts from that adjusted date rather than the original anchor.
