Date Duration Calculator
Updates automatically · "Months"/"years" totals are averages — see the exact breakdown below
End date is before start date — showing the duration between the two as a positive span.
- Total days
- —
- Total weeks
- —
- Total months (avg.)
- —
- Total years (avg.)
- —
- Business days
- —
The duration between two dates sounds like it should have one obvious answer, but “duration” actually means several genuinely different things depending on what you’re asking. This tool gives you all of them at once, rather than picking one and hiding the rest: an exact calendar breakdown (years, months, and days, calculated the way a person would count on a calendar), flat totals (total days, weeks, months, and years, as single numbers), and an optional business-days count (weekdays only, for anything scoped in working days rather than calendar time).
The exact breakdown is calendar-anchored, not a fixed-length unit — it’s built by walking real calendar months and years, so “1 month” always means one real month’s worth of days, whichever month that happens to be (28 to 31 days), not a fixed 30-day placeholder. This is exact, but it does mean a month-length mismatch has to be resolved somehow: January 31 to February 28 has no clean “one month” answer, since February has no 31st for the anchor to land on. This tool resolves that case to the actual elapsed days (28) rather than forcing a fractional or rounded month — documented honestly in the FAQ below as a real convention choice, not presented as the one obviously correct answer, since a different convention could reasonably resolve it differently.
Total Months and Total Years are a different, separately useful kind of number: averages, not calendar counts. They’re computed as total days divided by the Gregorian calendar’s average month length (30.436875 days) and average year length (365.2425 days) — the same average a leap-year cycle produces over 400 years. This answers “roughly how many months/years is this” as one clean decimal figure, which is exactly what the exact breakdown deliberately doesn’t try to do (a calendar breakdown can’t cleanly express “1.8 years” as a single number — it gives you “1 year, 9 months, 12 days” instead). Both numbers are computed from the same real, leap-year-aware day count; they’re just answering different questions.
Negative durations (end date before start date) always compute, never error. A visible notice appears above the results in that case, and every number shown — total days, the breakdown, business days — is the positive size of the span between the two dates, not a signed negative number that could be misread. Business days count weekdays strictly after the start date, up to and including the end date (a Friday to the following Monday is 1 business day, since Saturday and Sunday fall in between and the start date itself is where you’re counting from, not an elapsed day) — public holidays aren’t excluded, since holiday calendars vary by country and this tool has no way to know which one applies.
Every calculation runs on real calendar math, including real leap years — no approximation smooths over a February 29, and every date field is handled as a plain calendar date (no time-of-day component), so a duration spanning a daylight-saving transition is never off by an hour at the boundary. Nothing is sent anywhere: both dates and every result stay in your browser.
Examples
- Age in exact years, months, and days — set the start date to a birth date and the end date to today (the Today button fills either field with the current date) for a precise breakdown, not just a single "age in years" number.
- Business days until a deadline — enable "Also count business days" and set the end date to a due date, to see how many working days remain rather than raw calendar days, useful for anything scoped in working days rather than wall-clock time.
- Time since a specific event — a project start date, a subscription anniversary, or a countdown that's already passed. If the event is in the future relative to today, the end-before-start notice makes that unambiguous rather than showing a number that could be misread as "time remaining" versus "time elapsed."