Exact days, weeks, months, and years between two dates
0
total days
Pick a start date
Choose the earlier date.
Pick an end date
Choose the later date.
Read the result
Total days plus a years/months/days breakdown.
Pick a start and end date to see the exact difference — total days, whole weeks, a calendar-aware years/months/days breakdown, and an optional business-days-only count that skips weekends. Works either way round: enter the later date first and it still shows the correct (absolute) difference.
A common use: put in a birthdate as the start date and today as the end date to get an exact age in years, months, and days — not just a rounded year count.
Note on counting: "total days" is exclusive (Jan 1 to Jan 3 is 2 days apart), while "business days" counts both the start and end date if they're weekdays (Mon Jan 5 to Fri Jan 9 is 5 business days, even though that's only a 4-day gap) — this matches how each is normally used: a gap in days vs. how many working days you actually have available.
Monday through Friday — this doesn't account for public holidays, since those vary by country and region.
The tool shows the absolute difference either way, with a note that the order was reversed.
"Total days" is exclusive — the gap between the two dates, so Jan 1 to Jan 3 shows 2 days. "Business days" counts inclusively — both the start and end date are included if they fall on a weekday, so Mon Jan 5 to Fri Jan 9 shows 5 business days. This matches how each number is actually used in practice: total days answers "how far apart are these two dates," business days answers "how many working days do I have from this date through that one."
Yes — that's one of the most common uses. Put their birthdate in as the start date and today's date as the end date; the years/months/days breakdown gives an exact age, not just a rounded year count.
Yes — it's built on real calendar-date arithmetic (letting JavaScript's own Date handling account for actual month lengths, including February 28 vs. 29), not a fixed 30-day-per-month approximation, so a range spanning a leap year's extra day comes out correct.
Just full calendar days — both inputs are plain dates with no time-of-day component. If you need a difference down to the hour or minute (for example, between two exact timestamps), that's a different kind of tool than this one.
Not with this tool — it's scoped to finding the difference between two dates you already have, not projecting a new date forward or backward from one. "How many business days is it from date A to date B" is exactly what this tool answers; "what date is 10 business days from today" is the reverse question, and needs a different tool.
No — it only excludes Saturdays and Sundays. Public holidays aren't included because they vary by country, region, and even by year, so there's no single correct calendar to apply automatically.
Calendar days count every day in the range, including weekends. Business days count only Monday through Friday, which is what actually matters for things like project deadlines, shipping estimates, or contract terms that specify working days.
Yes — there's no practical range limit; it works the same for a date decades away as it does for next week.
Yes — alongside total days and the years/months/days breakdown, you'll see the difference expressed as whole weeks plus any leftover days (for example, 19 days shows as "2 weeks, 5 days").
No — the calculation happens entirely in your browser. The dates you enter are never sent to a server.
Both use the same DATEDIF function: =DATEDIF(A2,B2,"d") for total days, "y" for full years, "ym" for full months ignoring years, and "md" for leftover days ignoring years and months. Combined into one readable string: =DATEDIF(A2,B2,"y")&" years, "&DATEDIF(A2,B2,"ym")&" months, "&DATEDIF(A2,B2,"md")&" days". Note DATEDIF requires the start date to actually be earlier than the end date, or it returns an error — this tool handles either order automatically.
It genuinely varies by database, which trips people up: PostgreSQL and Oracle both support direct subtraction — end_date - start_date returns the day count as a plain number, no function needed. SQL Server uses DATEDIFF(day, start_date, end_date) — note the unit comes first. MySQL's DATEDIFF(end_date, start_date) takes only two arguments, in the opposite order from SQL Server's — a common source of off-by-sign mistakes when porting a query between the two.
No — not necessarily. "N business days" means N weekday-only calendar days, not a fixed number of hours. If a weekend falls inside that window, the real elapsed time is longer than N×24 hours — for example, an order placed Thursday with "2 business days" shipping typically arrives Monday, not Saturday, since Saturday and Sunday don't count. This tool's business-days count reflects that same weekday-only logic.