How it works
Age is not the difference between two years on a calendar — it is elapsed calendar time from a birth date to a reference date, broken into whole years, leftover months and leftover days without pretending every month has thirty days. The engine validates both dates (February 30 and similar inputs are rejected), converts each date to an ordinal day count, and subtracts. It then walks backward from the as-of date: count full years only after the birthday has occurred in the as-of year, borrow months when the day-of-month has not yet arrived, and borrow days from the previous month when needed — February gets 28 days in common years and 29 in leap years. On the defaults — birth June 15, 1995, as-of September 15, 2026 — the birthday has already passed in 2026, so years = 2026 − 1995 = 31. From June 15 to September 15 is exactly 3 months and 0 days. The raw day count between the two dates is 11,415 total days. That Y-M-D breakdown and the total-days figure answer different questions. A passport form asking age on last birthday wants 31 years; a visa rule counting days since birth wants 11,415; a pediatric chart may want months for infants. Leap years are included in the day count: every February 29 between birth and as-of adds one day to totalDays even when the birthday is not February 29. Someone born February 29, 2000 reaches a nominal birthday on February 28 in non-leap years in many jurisdictions — the engine handles variable month lengths at the day level. The CDC and other health agencies report age in completed years for mortality tables; epidemiology often uses exact age in days for precision. Set the as-of fields to any future date for how old will I be on… planning — a wedding, retirement date or school cutoff — without waiting for that day to arrive.
Formula
Validate birth date and as-of date (month lengths + leap years)
totalDays = ordinal(as-of) − ordinal(birth)
years = as-of year − birth year (minus 1 if birthday not yet reached)
months = month difference, borrowing 12 if negative
days = day difference, borrowing from previous month if negative
Worked example — defaults
Birth 1995-06-15 · As-of 2026-09-15
Years = 31 (birthday passed in 2026)
Months = 3 (Jun 15 → Sep 15)
Days = 0
Total days lived = 11,415
Tips
- Use total days for legal deadlines and scientific age; use years-months-days for human-readable form answers.
- If the as-of date is before the birthday in the as-of year, subtract one from the year count before reading months.
- February 29 birthdays: many systems treat February 28 as the birthday in common years — confirm your jurisdiction's rule.
- For how old will I be on… set as-of to the event date, not today.
- Pair with time duration calculator when you need hours and minutes between timestamps, not calendar age.
Frequently asked questions
- How old am I if I was born June 15, 1995?
- On September 15, 2026: **31 years, 3 months, 0 days** — **11,415 total days** since birth. Change the as-of date to today for a live answer.
- How many days old am I?
- Total days counts every calendar day from birth through the as-of date. On the defaults that is **11,415 days** from June 15, 1995 to September 15, 2026, including all leap days in the span.
- Does the calculator account for leap years?
- Yes. February has 29 days in leap years, and totalDays includes every leap day between the two dates. The Y-M-D breakdown also borrows the correct number of days from the previous month.
- Can I calculate age between two dates that are not today?
- Yes — set as-of year, month and day to any valid calendar date. The same engine computes elapsed time for contracts, anniversaries or age at event questions.
- Why is total days different from years × 365?
- Calendar years are not all 365 days — leap years add one day, and the Y-M-D breakdown respects varying month lengths. **11,415 days** is the exact count; 31 × 365 = 11,315 would be wrong by 100 days.