Date calculator: add or subtract days, weeks and months
Thursday, December 3, 2026
30 days after today, Tuesday, November 3, 2026
About the result
- Weekday
- ISO date
- Distance from the start
- In weeks
- Relative to today
How date arithmetic works
Adding to a date looks like simple addition, but it mixes two different kinds of unit. Days and weeks are fixed lengths: seven days is always seven days. Months and years are positions on the calendar: “a month from now” means the same day number in the next month, however long that takes. Knowing which kind you are using is most of what there is to know about this subject.
With fixed units the method is plain counting. Every date has a position in a continuous count of days, so the calculator adds the number and converts back to a date. Month lengths and leap years take care of themselves. With calendar units it moves along the calendar and keeps the day number if it can.
Why a month is not 30 days
Because calendar months differ, a span of whole months has no single length. We checked every possible start date across the full 400-year Gregorian cycle, after which the calendar repeats exactly:
| Span | Shortest | Longest |
|---|---|---|
| 1 month | 28 days | 31 days |
| 3 months | 89 days | 92 days |
| 6 months | 181 days | 184 days |
| 12 months | 365 days | 366 days |
So “90 days” and “3 months” are close without being the same, and the gap can reach two days, since three calendar months last 89 to 92 days. That is enough to miss a deadline. If a document says 90 days, enter 90 in the days box. If it says three months, enter 3 in the months box. Don’t convert one to the other. For common spans there are ready pages too: 90 days from today and 12 weeks from today.
The month-end rule
The difficult case is a start date near the end of a month. January 31 plus one month has no exact answer, because February 31 does not exist. There are two possible conventions: stop at the last day of the shorter month, or let the extra days spill into the next one. This calculator stops at the last day. Excel’s EDATE, Java’s plusMonths and .NET’s AddMonths do the same, so results here should match your software. The result carries a note whenever this happens.
| Calculation | Result | Why |
|---|---|---|
| January 31, 2027 + 1 month | Sunday, February 28, 2027 | The day is cut back to the end of February |
| January 31, 2028 + 1 month | Tuesday, February 29, 2028 | 2028 is a leap year, so February has 29 days |
| February 29, 2028 + 1 year | Wednesday, February 28, 2029 | No February 29 in 2029, so it stops on the 28th |
| August 31, 2027 + 6 months | Tuesday, February 29, 2028 | February again: 28 or 29 depending on the year |
| March 31, 2027 − 1 month | Sunday, February 28, 2027 | Subtracting clamps too |
| November 2, 2027 + 90 days | Monday, January 31, 2028 | Days are counted one by one, so month length never matters |
| November 2, 2027 + 3 months | Wednesday, February 2, 2028 | Same day number, a different number of days |
| May 31, 2027 + 1 month + 1 day | Thursday, July 1, 2027 | Months first, then days |
Date arithmetic that uses months does not always undo itself. January 31, 2027 plus one month is February 28, 2027, and that date minus one month is January 28, 2027, not January 31. The clamp discards information that subtraction cannot get back. Recurring dates should therefore always be calculated from the original date. A monthly bill due on the 31st is calculated as “start + 2 months”, not “last due date + 1 month”, or it will drift to the 28th after the first February and stay there.
The order of operations
When you combine units, order can matter. This calculator applies years and months first, as one step, and then weeks and days. So it handles “1 year and 2 months” as 14 months at once, with a single clamp at the end. That matches how people read such a phrase. A deadline written as a sequence, such as “one month, then a further 10 days”, gives the same answer here. Where a rule specifies a different order, apply the steps one at a time and feed each result back in as the new start date.
Leap years
A leap day only affects a calculation that crosses it. Adding 365 days to a date before February 29 in a leap year lands one day earlier in the following year’s calendar than you might expect: 365 days from February 1, 2028 is January 31, 2029. Adding one calendar year to the same date gives February 1, 2029, which is 366 days. Adding a year to February 29 gives February 28, because the next year has no leap day. The Gregorian rule behind this is that a year divisible by 4 is a leap year, except century years not divisible by 400.
Business days are a different count
Tick “Days are business days” and the days part skips Saturdays and Sundays. Five business days after a Monday is the next Monday, so 5 business days takes 7 calendar days, and 10 business days takes 14. The rule is not simple multiplication, though. Starting on a Friday, one business day takes 3 calendar days. For public holidays, a different weekend, or a working-day count between two dates, use the business days calculator.
Common uses, and what to check
- Notice periods and return windows. Check the wording. “Within 30 days” usually means the day after the event is day 1, which matches this tool. A clause may say otherwise.
- Project planning. Enter weeks when you think in weeks. The result keeps the weekday, which makes meeting cycles easy to plan.
- Subscriptions and billing. A monthly charge usually keeps its day number, and a 28-day cycle does not. Thirteen 28-day cycles fit into a year, with one or two days left over.
- Looking back. Switch to “before” for “what was the date 90 days ago”, or use the days ago calculator.
This calculator works in calendar dates, with no time of day, so clock changes do not affect it. For hours and minutes, including across a daylight saving change, use the time calculator. To find the distance between two dates you already know, use days between dates.
In a spreadsheet, adding a number to a date cell adds days, =EDATE(A1,3) adds three months, and =WORKDAY(A1,10) adds ten working days. All three treat the start date as day zero, as this tool does.