Date arithmetic done in your head goes wrong often. Months vary in length, leap years intrude, and sometimes weekends have to come out. How many days until a contract expires, how many working days remain before a deadline, what date falls exactly ninety days from now — this handles all of it precisely.
There are two modes. Days between dates counts total days, weeks, months and business days across a range, while add or subtract shifts a base date by a period. You can define which weekdays count as working days, so six-day weeks and unusual schedules work too.
How to use
- Choose a mode — Use days between dates to find out how long is left, and add or subtract to find what date falls a given period away. The today button fills the start or base date with the current date.
- Enter your dates — Pick from the date field or type directly. The full date including the weekday appears underneath, so a mistyped date is obvious straight away.
- Decide whether the end date counts — Turning on include the end date adds one day to the result. This distinction causes real confusion in practice: rental periods and leave allowances count both ends, whereas "days remaining until" does not.
- Define working days — Toggle the weekday buttons to set which days count as working days. The default is Monday to Friday; add Saturday or select specific days for shift patterns. Business days are counted inclusive of both ends.
Frequently asked questions
Why is "three months" sometimes 92 days and sometimes 89?
Because months run from 28 to 31 days. Three months after 1 January (1 April) is 90 days; three months after 1 June (1 September) is 92.
So "three months" and "90 days" are different periods in a contract. Spell out which basis applies to avoid arguments. This tool shows the month count and the total day count at the same time, so the gap between the two readings is immediately visible.
What is 31 January plus one month?
This tool clamps to the last day of February — the 28th, or the 29th in a leap year. Since 31 February does not exist, it falls back to the end of that month.
JavaScript's built-in behaviour differs: setMonth rolls forward to 3 March. Most people read "a month after 31 January" as the end of February, so that intuition is what is implemented here. Financial and legal calculations often specify their own convention, so check the governing rules for those.
Are public holidays excluded from business days?
No. Only the weekdays you select are counted; statutory holidays and company closures are not applied.
Holidays differ by country, move from year to year (lunar calendar dates especially), and often come with substitute-holiday rules, so handling them properly requires per-country calendar data. Get the approximate business-day count here and subtract the holidays in that range yourself.
My countdown is off by one day.
It comes down to which convention you are using. A countdown to an exam usually treats the exam day as day zero and does not count it, whereas "a hundred days starting today" counts today as day one.
The include the end date option is exactly this distinction — leave it off when counting days remaining, turn it on when measuring the length of a period. It is also why anniversary counts that start at day one land a day earlier than you might expect.
Concepts worth knowing
The leap year rule has exceptions
Divisible by four is a leap year, except that divisible by 100 is not, except that divisible by 400 is. So 1900 was not a leap year and 2000 was.
Those exceptions have caused real bugs: software that implemented only the divisible-by-four rule mishandled 2000, and code that will repeat the mistake in 2100 is still out there. Do not implement date arithmetic yourself — use a tested library or the platform's own facilities.
Why ISO week numbers confuse everyone in December
ISO 8601 starts weeks on Monday and defines week 1 as the week containing 4 January. As a result, the last few days of December can belong to week 1 of the next year, and the first days of January can belong to week 52 or 53 of the previous one.
That is usually behind odd-looking year-end numbers in a weekly dashboard. The US convention of starting weeks on Sunday adds another layer, so two tools can report different week numbers for the same date. Agree on one convention across your team.
Drop the time when you only mean dates
Mixing times into a day count makes the answer unstable. 1 August at 23:00 and 2 August at 01:00 are two hours apart but one calendar day apart; divide the elapsed hours by 24 and you get zero days.
So date-only arithmetic should normalise both values to midnight before comparing, which is what this tool does. The same applies in databases: use a DATE column rather than TIMESTAMP when the time of day is irrelevant, and you sidestep this confusion and timezone problems at once.