The age calculator finds exact calendar age from a date of birth to any chosen age-at date. It reports completed years, remaining months and days, total months, total weeks, total days, the weekday of birth, and the countdown to the next birthday. That makes it useful for birthday planning, school cutoffs, sports eligibility, records, benefits, age-in-days milestones, and family history notes.
Why calendar age needs more than year subtraction
A person’s age is not simply the current year minus the birth year. The birthday must have occurred in the current year before the next completed year is counted. Months also have different lengths, and leap years add February 29. This calculator uses calendar-aware date arithmetic so that January 31 to February 28, February 29 birthdays, and month-end cutoffs are treated as dates rather than rough averages.
Use this page for a single person’s age at a date. To compare two people, open the age difference calculator. For prenatal ages expressed in weeks and days, the gestational age calculator uses pregnancy dating conventions instead of birthday age. For pure elapsed clock time, the time duration calculator is more appropriate, and for cross-zone date-time questions use the time-zone calculator. For grouping whole years into ten-year blocks, the years to decades calculator converts years to decades and back.
Use an explicit comparison date
For an application or anniversary, enter its reference date in the as-of field rather than relying on today’s date. Save that date with the age, so another person can reproduce the answer later. For someone born near month-end or on leap day, read the calendar breakdown alongside total days; those outputs answer different questions and should not be interchanged.
Choose the output according to the purpose:
| Purpose | Output to retain | Extra context |
|---|---|---|
| Age on a form’s reference date | Calendar age | The exact as-of date |
| Length of an elapsed interval | Total days | Both endpoint dates |
| Anniversary planning | Birthday-related output | The page’s leap-day convention |
A rule requiring age on a particular date should be checked against that date, rather than today’s automatically changing age.
Method and calendar rules
The calculator accepts birthDate and asOf. Both are parsed as ISO-style date strings. If either date is invalid or uses year 0000, the calculation returns invalid. If the birth date is after the as-of date, the calculation returns invalid with the note that date of birth must be on or before the age-at date.
Completed years are counted by birthdays, using February 28 for a February 29 birthday in a non-leap year. The calculator first finds the effective anniversary for those completed years. It then applies the shared original-start rollover month helper from that anniversary to the age-at date to obtain the remaining months and days. Each helper anchor uses its original start day; if that day does not exist in the target month, it rolls into the following month. The latest anchor on or before the age-at date determines the whole-month count and the leftover calendar days.
The birthday adapter has a specific fallback: if the anniversary-based helper remainder contains a year, it takes the month/day components from the birth-to-age-at helper span while retaining completed birthday years. This keeps the February 28 birthday policy separate from the generic month convention. The Age result therefore need not match a generic date-duration decomposition. For example, February 29, 2020 to March 29, 2021 is 1 year, 1 month, 1 day in Age because its effective 2021 anniversary is February 28; the generic date duration is 1 year, 1 month, 0 days.
Total days are calculated separately as the calendar-day difference from birth to as-of. Total months are computed as completed years times 12 plus the leftover completed months:
Total weeks are the floor of total days divided by 7:
For the next birthday, the calculation creates a date in the as-of year using the birth month and day. If that birthday is before the as-of date, it creates the birthday in the following year. The days-to-birthday item is the calendar-day difference from as-of to that next birthday, or “Today” when the difference is zero.
Example: calculating age on a target date
Enter 1990-06-15 as the date of birth and 2025-07-13 as the age-at date. The June 15 birthday has occurred, so completed years are 35 and the effective anniversary is June 15, 2025. Its one-month rollover anchor is July 15, after the age-at date. The eligible anchor is therefore June 15 itself, leaving 0 months and 28 days.
The primary result is 35 years, with a hint of 0 months, 28 days. Total months are 35 times 12 plus 0, or 420. Total days are the calendar-day difference between June 15, 1990 and July 13, 2025, and total weeks are that number divided by 7 and rounded down. The born-on item formats the birth date as a weekday, and the next birthday item counts forward to June 15, 2026 because the 2025 birthday has already passed.
For a cutoff-date example, enter a child born 2020-09-02 and an as-of date of 2025-09-01. The result is one day short of 5 years, which may matter for school eligibility rules that require a child to be 5 on or before a specific date.
How to use the answer
Use the years, months, and days result when a form asks for exact age. Use total months for infant and toddler milestones, because pediatric and childcare contexts often use months during early childhood. Use total days for anniversaries, age-in-days celebrations, or research records. Use the next birthday countdown for planning, but remember that organizations may define age cutoffs by local law or policy rather than by your preferred birthday celebration date.
If you are calculating age for official purposes, check the rule that applies. Schools, sports leagues, immigration forms, insurance policies, and retirement programs may have their own definitions of the effective date. The retirement age calculator is better for retirement-specific planning because it uses benefit-age conventions rather than only birthday math.
Edge cases and common mistakes
Leap day birthdays are the classic edge case. This calculator explicitly treats February 28 as the anniversary in non-leap years for both age and next-birthday logic. Some jurisdictions instead use March 1 or another explicit rule. Use this calculator for transparent Gregorian date-only math, then follow the official rule for eligibility.
Time zones rarely matter for date-only age, but they can matter for newborn records, international travel, or systems that store timestamps in UTC. This calculator does not ask for birth time or location. It also does not count partial months in total months; a person who is 2 years, 11 months, and 29 days has 35 completed months, not 36, until the next monthly anniversary.
Calendar and date boundaries
Dates use the Gregorian calendar as date-only values. Leap day is a valid birthday; completed years follow the stated birthday convention, while the remaining month/day helper uses original-start rollover anchors rather than equal-length months. No time zone or daylight-saving offset is applied, so the result changes at the chosen calendar-date boundary, not at a modeled instant. A birth date after the as-of date is outside the domain.
Sources
- IETF, RFC 3339: Date and Time on the Internet — practical date-time format profile for unambiguous date strings in software.
- BIPM, The International System of Units brochure — official context for seconds and time measurement, relevant when distinguishing calendar dates from elapsed time.
- IANA, Time Zone Database — authoritative source for time-zone rules that can affect timestamp-based age calculations outside this date-only form.