Add/Subtract Days Calculator
Calculate a new date by adding or subtracting days, weeks, months, or years from a specific date. Perfect for determining appointment dates, due dates, deadline calculations, and more. A versatile tool for forward and backward date calculations.
How to Add/Subtract Days?
1. Select the start date
2. Enter the duration to add or subtract:
- Number of years
- Number of months
- Number of weeks
- Number of days
3. Choose to add or subtract
4. Click "Calculate New Date"
Note: Date range must be between years 1900-2100. You can also enter negative values.
Date Calculations
Adding and subtracting time from a date
Shifting a date forward or backward is where calendar arithmetic stops being commutative. Adding one month then one day does not always land on the same date as adding one day then one month, and knowing why prevents a whole class of scheduling bugs and missed deadlines.
Formula
new date = base date +/- (years, months, weeks, days), applied largest unit first
Years and months are applied before days, and overflow past the end of a month is clamped rather than rolled over.
Why order of operations matters
Start from 31 January 2025. Add one month and you get 28 February, because 31 February does not exist and the value is clamped to the last valid day. Now add one day: 1 March.
Reverse the order. Add one day to 31 January and you get 1 February. Add one month and you get 1 March. Same destination, coincidentally.
Now try 30 January. Month first: 28 February, then plus one day is 1 March. Day first: 31 January, then plus one month is 28 February. Different answers from identical inputs. This calculator applies the larger unit first, which is the convention used by ISO 8601, PostgreSQL, and most payroll systems.
Clamping versus rolling over
When a month shift produces an impossible date, implementations choose one of two behaviours, and they disagree often enough that it is worth knowing which one you are dealing with.
- Clamping: 31 March minus one month becomes 28 February. Used by ISO 8601, SQL databases, spreadsheet EDATE functions, and this calculator.
- Rolling over: 31 March minus one month becomes 3 March, by first computing 31 February and letting the excess spill into March. Rare, but naive date libraries do it.
- Clamping is not reversible. 31 March minus one month is 28 February, but 28 February plus one month is 28 March. Never assume you can undo a month shift by applying the inverse.
Common uses that depend on getting this right
- Subscription renewal dates, where a 31st-of-the-month signup must resolve to a sensible date in February.
- Contractual notice periods expressed in months rather than days.
- Medication schedules and vaccination intervals measured in weeks.
- Warranty and guarantee expiry, typically 12 or 24 months from purchase.
- Statutory limitation periods, where being one day late is fatal to a claim.
- Incubation, gestation, and food expiry windows measured in fixed day counts.
Worked example
A 24-month warranty starts on 31 August 2024. Adding 24 months gives 31 August 2026 - no clamping needed, since August has 31 days. That is a Monday.
Compare with a 730-day warranty from the same date. 2024 to 2026 spans one leap day (29 February 2024 has already passed, so no), giving 730 days forward: 31 August 2026 as well. The two happen to agree here. Start from 31 December 2023 instead and 24 months gives 31 December 2025, while 730 days gives 30 December 2025 - because 2024 was a leap year. Always check which basis the contract specifies.
Frequently Asked Questions
Related calculators
References
- ISO 8601-1:2019 - Date and time representations
- PostgreSQL documentation - date/time functions and operators
Last reviewed: 2026-08-07. This page is informational. For legal, medical, tax, or financial decisions, confirm the result with a qualified professional.