Get the exact calendar difference between two dates in years, months and days, plus total days, weeks, hours and minutes.
Dividing the number of days by 30 and calling the result "months" is how most quick date-difference answers go quietly wrong, since real months run from 28 to 31 days. Date Difference Calculator works the way a calendar actually does: it counts real elapsed years, months and days, alongside the plain totals in days, weeks, hours and minutes.
Use it for contract terms, ages measured precisely rather than rounded, or any "how long has it been" question where the answer needs to survive a month with 28 days in it. Enter two dates and every figure updates immediately.
The tool loads with Start Date set to 2024-01-31 and End Date to 2024-03-01, which resolves to 0 years, 1 month, 1 day. That’s not a rounding artifact: one calendar month after January 31 lands on February 29 (2024 is a leap year, so that’s the last valid day of February), and February 29 to March 1 is exactly one more day.
The calculator finds the largest whole number of calendar months that fit between the two dates, adding months to the start date one at a time and clamping to the target month’s real last day whenever the start day doesn’t exist there (adding a month to January 31 can’t land on "February 31"). Whatever remains after that becomes the day count. This was checked during development against Python’s dateutil.relativedelta, the reference implementation most calendar libraries agree with, across five cases including a leap-day start (February 29 to the following February 28) and matched on every one.
2024-02-30 doesn’t silently roll forward to March 1 the way JavaScript’s own Date parsing would; it’s rejected outright with “Enter two valid dates in YYYY-MM-DD format.”Difference
0y 1m 1d
Total Days
30
Weeks
4w 2d
Total Hours
720
Total Minutes
43,200
The Years/Months/Days line is calendar-aware, not a flat 30-day month: one month after January 31 lands on February 29 in a leap year (clamped to the month’s real last day), which is why the default dates above resolve to 1 month, 1 day rather than 30 days badly relabeled.