Age Calculation: Completed Years, Leap Days and Legal Age
Published 2026-10-31
"How old are you?" has a single answer in most contexts, and at least three answers in practice.
Completed years: the default
Almost everywhere that matters — passports, contracts, medical records, retirement — age means completed years since birth. You turn 30 on your 30th birthday, not on 1 January of that year.
The formula is a date difference, but it is not "days divided by 365.25". That approximation drifts, and it gets birthdays wrong near the boundary. The correct approach compares month and day:
age = year(now) - year(birth)
if (month, day) of now < (month, day) of birth: age -= 1
Two dates can be 364 days apart and still be one year apart in completed years, if a leap day falls between them.
Leap-day birthdays
Someone born on 29 February has a birthday in only about one year in four. Jurisdictions handle it differently:
| Convention | Effect |
|---|---|
| 1 March (most common in law) | Age increments on 1 March in non-leap years |
| 28 February (some jurisdictions) | Age increments one day earlier |
| 1 January of the year they turn N | Used in some East Asian legal contexts |
The practical consequence is a one-day window where two systems disagree about whether someone is legally an adult, eligible for a pension, or old enough to sign. For anything legally binding, use the rule stated in the relevant statute rather than a calculator's default.
Korean age, and its abolition
Korea historically used three systems simultaneously:
- 만 나이 (full age) — completed years, the international standard
- 세는 나이 (counting age) — you are 1 at birth and gain a year every 1 January
- 연 나이 (year age) — current year minus birth year, ignoring birthdays
A person born in December could be 1 year old by the counting system and 0 by the full-age system, on the same day. Korea unified on the international standard in June 2023, but the older systems still appear in informal speech and in some regulations.
If a document from Korea before mid-2023 gives an age, check which system it used — the difference can be one or two years.
Why two calculators disagree
Three common causes:
- Different conventions — one uses completed years, the other counts calendar years crossed.
- Time zone — if the calculation uses a UTC timestamp, someone born late on 31 December in UTC+8 can appear to be born on 30 December.
- Leap-day handling — as above.
The first is by far the most common, and it is not a bug in either tool.
Age arithmetic worth knowing
| Question | Method |
|---|---|
| Days alive | Date difference; add leap days automatically |
| Next birthday | This year's birthday; if passed, next year |
| Age at a past date | Completed years between birth and that date |
| Age in months (infants) | Completed months; paediatric growth charts use this, not years |
The last one matters more than it looks: infant development milestones and drug dosages are specified in completed months, and rounding to years loses clinically relevant precision.
Age Calculator computes completed years plus total days, months and the countdown to the next birthday, with a note on which convention it applies. For the difference between two arbitrary dates, Date Distance Calculator handles the inclusive/exclusive choice explicitly.
Summary
Completed years is the default; everything else is a convention that must be stated. Leap-day birthdays and pre-2023 Korean documents are the two cases where the convention actually changes the answer.