Age calculator

Calculate Gregorian calendar age, total days and the next birthday with an explicit leap-day rule. Copy or download the result.

How to use

Calculate Gregorian calendar age, total days and the next birthday with an explicit leap-day rule. Copy or download the result.

Step 1

Set the two dates

Fixed example

2000-01-012026-01-01

Enter the birth date and the date on which you want to measure age. Today uses your device’s local date.

Step 2

Choose the anniversary rule

Fixed example

02-2902-28 / 03-01

For a February 29 birthday, choose February 28 or March 1 in non-leap years.

Step 3

Calculate and keep the result

Fixed example

2023-01-312023-02-282023-03-01

Read completed years, months and remaining days, then copy or download the dated summary.

Practical uses

Planning a celebration on a different date

Suppose a person born on 2000-06-15 will celebrate on 2026-06-14. Enter those two dates, leave times off, and read 25 years, 11 months and 30 days: the celebration is one day before the 26th birthday. Move the reference to 2026-06-15 and the result becomes 26 years, 0 months and 0 days, with zero days until the anniversary. This is useful when writing invitations or checking a dated form. For an institution's age cutoff, use its specified reference date and rule rather than assuming that the celebration date determines eligibility.

Family timelines and record review

A family photograph may be dated while its caption gives an age in months. Use the photograph's date as the reference and compare completed months, not total days divided by 30. If a birth date of 2023-01-31 is compared with 2023-03-01, the calendar result is one month and one day, while the day total is 29. Keep both measurements in your notes so another reader knows which convention the caption used. The weekday can help flag a transcription discrepancy, but matching a weekday does not establish that a date or a person's identity is correct.

Checking a spreadsheet or another calculator

When two age results disagree, compare the same birth date and reference date with times off first. Try 2023-01-31 to 2023-03-31: this tool reports two months, not two months and three days from repeatedly adding clamped months. Then test a February 29 birth under both anniversary rules. These small examples isolate month anchoring and leap-day handling before you investigate a long lifetime calculation. Copy the dated summary with the rule; sending only the three age numbers makes it hard for someone else to reproduce the difference.

Calendar-age example with 26 completed years
Example: 1 January 2000 to 1 January 2026 gives 26 completed years and 9,497 calendar days. The dates are fictional demonstration inputs.

Calendar age, totals and local hours

Calendar age answers a civil-date question: how many full anniversaries, then full calendar months, then remaining calendar days have passed? It is deliberately different from dividing seconds or total days by an average year length.

Enter a valid birth date and choose the date on which the age matters. Today uses the device's local date; it is not a UTC date hidden behind the display. Past and future reference dates are allowed, but the birth date cannot be in the future or after the reference. The accepted range is 0001-01-01 through 9999-12-31. The Temporal.PlainDate documentation describes the important distinction: a calendar date is independent of a time zone.

The main result is the triplet of completed years, months and days. The supporting rows give total calendar days, completed weeks, completed months, weekday of birth, the selected February 29 anniversary rule and the next birthday with days remaining.

The optional time section is a separate elapsed-hours check. It combines the birth date, birth time, reference date, reference time and the device time zone; it does not change the calendar age. The Temporal.ZonedDateTime documentation explains why skipped and repeated local clock times need an explicit disambiguation rule, and this tool rejects those ambiguous cases instead of guessing.

2023-01-312023-02-282023-03-01
Fixed month-end example: January 31 reaches February 28 after one clamped month, then March 1 adds one remaining civil day.

Worked example: January 31 to March 1

For birth date 2023-01-31 and reference date 2023-03-01, no complete year has passed, so January 31 remains the year anchor. The tool checks one calendar month from that anchor. It lands on February 28 in 2023 because February has no 31st day. This adjustment is called clamping: keep the requested month, but use its last valid day when the original day does not exist.

The next day, March 1, is then one remaining civil day after the clamped monthly anchor. The result is not 29 divided by an average month; it is zero years, one month and one day under this tool's month-end convention.

This example is useful when comparing calculators. If another calculator reports zero months and 29 days, it may be using a duration convention instead of anniversary-and-month arithmetic. Neither number is self-explanatory unless the rule is stated.

Every month candidate is measured from the same year anchor. For January 31 to March 31, adding two months directly gives March 31, so the age is two months and zero days. Repeatedly adding one month would go January 31 to February 28 to March 28 and introduce a three-day drift. The independent anchors avoid that drift; they do not turn all months into equal durations.

How the month-end example is interpreted
StepDate or valueMeaning
Birth date2023-01-31The anchor date from which completed years and months are measured.
One completed month2023-02-28The calendar month addition is constrained to the last valid day of February.
Reference date2023-03-01One remaining civil day after the February 28 anchor.
Displayed age0 years, 1 month, 1 dayThe triplet is a calendar-age result, not an average-duration result.

How to read every result row

The large years, months and days numbers are the calendar age on the selected reference date. They are the safest row to quote when someone asks how old a person is on a date.

Total calendar days is an exclusive day difference: it is zero on the birth date, one on the next date, and so on. Completed weeks is that day count divided by seven and rounded down; completed months is years times twelve plus the displayed month count.

Next birthday is calculated using the same February 29 rule selected in the form. If the reference date is the birthday, the days remaining value is zero because the next anniversary has already arrived on that date.

Result rows and when to use them
RowWhat it measuresBest use
Years, months, daysCompleted civil anniversaries, completed months and remaining civil days.Age on a birthday, application date, appointment date or planned event.
Total calendar daysExclusive civil-day difference from birth date to reference date.Uniform day-count checks, milestones and debugging another calculation.
Completed weeksTotal days divided by seven and rounded down.Rough weekly milestones without implying extra precision.
Completed monthsCompleted years converted to months plus the displayed month count.Quick comparison of infant or project-age records where months are common.
Weekday of birthThe weekday for the birth date under the tool's Gregorian calendar.Timeline review and record checking, not identity proof.
Elapsed hoursExact instant difference from the optional local times when the time zone accepts both times.Hospital, travel or scheduling examples where time of day matters.

When to include local birth and reference times

Enable the time option only when both clock times are known and the device time zone is appropriate for both endpoints. The form has birth and reference times, but no separate birth-place or time-zone selector. A recorded 09:00 in another country is not automatically interpreted in that country's zone. Leave times off when you only need civil age, or use a zone-aware conversion outside this tool before making an elapsed-time comparison.

With a device set to America/New_York, noon on 2024-03-09 to noon on 2024-03-10 spans one civil day but 23 elapsed hours; noon on 2024-11-02 to noon on 2024-11-03 spans 25 hours. These are fixed examples of offset changes, not results for your present location. The hour row is displayed with up to two decimal places. That presentation is not evidence that an uncertain historical birth time is known precisely.

A skipped local time does not correspond to an instant, and a repeated local time can correspond to two. The tool rejects both rather than silently selecting an offset. It also rejects a reference instant before the birth instant, including reversed clock times on the same date. Calendar age can remain visible when hours fail, but result copy/download are disabled until the times are corrected or the time option is turned off.

Date age versus local-hour age
QuestionUse this settingInterpretation
How old is someone on April 12?Use dates only.The calendar age is based on civil anniversaries and is not affected by daylight saving.
How many hours passed between two local times?Enable local times and enter both clock times.The elapsed-hours row uses the device time zone and may reject skipped or repeated times.
Why does the hour count differ from days times 24?Compare the date result and the hour result separately.A civil day near a time-zone transition can have 23 or 25 elapsed hours.

Leap-day choices and keeping a reproducible result

The page applies Gregorian calendar arithmetic throughout its supported range. The US Naval Observatory calendar overview describes the Gregorian calendar as the internationally accepted civil calendar, and the US Naval Observatory leap-year rule gives the century-year exception that makes 1900 common and 2000 leap.

A February 29 birthday needs an explicit non-leap-year convention. The tool offers February 28 and March 1 because both appear in real record-keeping contexts, but the selection is a calculation rule rather than a legal, medical or benefits decision.

Older documents may use another calendar, an estimated age, a rounded age or a local convention that is not written down. This tool can make a Gregorian calculation consistent and repeatable; it cannot identify the calendar behind an ambiguous source record.

A useful saved result includes the two dates and the anniversary rule, not just an age. Copy and download keep that context in the summary. Share page is different: it sends only the clean tool link and does not recreate your inputs for the recipient.

Choosing the February 29 anniversary rule

For a February 29 birth date, the selected rule affects completed years, the next birthday and any result exported from the page. Keep the rule with the copied or downloaded summary so the number can be interpreted later.

February 28 treats the non-leap-year anniversary as the last day of February. March 1 treats it as the next calendar date after February 28. The tool does not decide which rule an institution should use.

When you are checking a family note or a form that does not say which convention was used, run both rules and record the difference. If the difference matters, consult the policy or source record rather than treating the calculator as an authority.

For birth 2020-02-29 and reference 2021-02-28, the February 28 rule gives one completed year; the March 1 rule gives zero completed years, 11 months and 30 days. On 2021-03-01, the March 1 rule gives exactly one year, while the February 28 rule gives one year and one day. The total civil-day difference is unchanged by either choice: only the anniversary-based decomposition changes.

How the February 29 setting changes interpretation
SettingNon-leap-year anniversaryUse when
February 28The anniversary is counted on February 28 in a common year.A record or policy says the birthday is observed on the last day of February.
March 1The anniversary is counted on March 1 in a common year.A record or policy treats the birthday as the day after February 28.
UnknownThe calculator cannot infer the original convention.Run both rules and keep the source uncertainty visible.

Historical and cross-calendar records

The date inputs are Gregorian civil dates, not a universal decoder for every historical calendar. A birth recorded under a Julian, lunar, religious or local civil calendar may need conversion before it is entered.

The US Naval Observatory leap-year rule is enough to explain why simple every-four-years shortcuts fail for 1700, 1800, 1900 and 2100, but it does not tell you which calendar a handwritten register used.

For genealogy or archival work, keep the original wording, the calendar system if known, the converted date if you use one, and the calculator rule. The result is easier to audit when the conversion assumptions are not hidden.

Common record questions before calculating age
Record clueRiskPractical response
Only a date is writtenThe calendar system may be unstated.Identify the source calendar before comparing it with a Gregorian date.
The age says about 25The number may be rounded or estimated.Use the calculator for a scenario, not as proof of the exact birthday.
The person was born on February 29The anniversary convention may change the age near February or March.Check both rules unless the source or policy states one.

Keeping the inputs with the result

Copy result keeps a labeled summary; Download offers the same information in clocktools-age.txt. Both include the birth and reference dates, age components, totals and selected anniversary rule. A valid time calculation also includes both clock times and the device zone. Keep that context when comparing calculations made on different days: an age number without a reference date quickly becomes ambiguous.

Share page opens supported native sharing or copies the page link. It deliberately strips the query string and fragment and does not attach your dates or summary. To let someone check your calculation, send a separately reviewed summary or fictional reproduction rather than expecting the shared link to restore it. The calculator does not create a saved input history, so download a needed result before leaving or resetting the page.

If Copy is blocked, select the displayed information manually. If Download reports that it has started, check the browser's downloads before assuming a file was saved. For an unavailable hours result, correct the times or turn the time option off to export the date-only calculation. If the guide fails to load, its retry action leaves your working inputs alone; a guide-loading message is not an arithmetic error.

Methodology

The calculator parses strict Gregorian YYYY-MM-DD civil dates, rejects invalid or out-of-range dates, and requires the birth date to be on or before today and the reference date to be on or after birth. It finds completed years from the selected February 29 anniversary rule, adds completed months from that year anchor with month-end clamping, then counts remaining civil days. Total days are exclusive civil-day differences; completed weeks are total days divided by seven and rounded down. Optional elapsed hours combine the two dates with local times in the device time zone and reject reversed, skipped or repeated local times.

Limits

Dates must be valid Gregorian dates from 0001 through 9999. Future birth dates are rejected, but a future reference date is allowed for age-on-date planning. The February 29 setting is a calculation convention, not an official eligibility decision. Local-hour results depend on the browser, the device time-zone database and the entered clock times. The page does not convert historical calendar systems, prove identity, verify a birth record or decide legal age rules.

Corrections

To check a suspected issue, use non-sensitive example dates whenever possible. Include the birth date, reference date, February 29 rule, whether local times were enabled, both times, the device time zone shown in the result, the expected rows and the observed rows. First compare the stated month-end and leap-day rules with the other source; many disagreements come from a different convention rather than a software defect.

Frequently asked questions

Why can another age calculator disagree?
First make the two input dates identical and turn times off. Then compare month-end anchoring and the February 29 rule. January 31 to March 31 tests whether months are added independently or sequentially; a February 29 anniversary tests the year boundary. For day totals, ask whether the other tool counts both named dates. These checks explain many disagreements without assuming either calculator is broken.
Does the day count include the birth date?
The difference is zero on the birth date and one on the next date. A list that includes both the birth date and the reference date has one more named date than this difference. Do not change the age calculation to satisfy an inclusive attendance or diary convention; use the total-day result only after checking how that source counts its first day.
Can I calculate age on a future date?
Yes, provided the birth date is today or earlier and the reference is not before birth. Enter the actual planned date, then check the reference in the summary. Today resets the reference to your device's local date, not to the future event. The displayed next birthday is relative to the selected reference, so it can differ from the birthday upcoming from today.
Which February 29 rule should I choose?
Use the convention needed for your task; the selector does not determine an institution's rule. If the record is silent, calculate both options around February 28 and March 1 and label each result. On a leap year's February 29 the actual date is available, so the non-leap-year substitution does not move that anniversary. Keep the chosen convention with an exported age.
Why is the elapsed-hours row missing or blocked?
Check that both fields contain a valid hour and minute and that the reference instant is not before birth. Near an offset change, an apparently ordinary clock time may be skipped or occur twice; this tool rejects it instead of guessing. The calendar result may still be valid. If no time-of-day question needs answering, switch times off rather than inventing a different birth time just to remove the warning.
What is saved when I use Copy, Download or Share?
Copy and Download contain the calculation summary, including its dates and rule; a successful hours calculation also adds its times and zone. Share sends only the tool link. Inputs are not kept as a saved history, and the link does not restore them. Before sending a copied result, review it for personal information and use a fictional example for an error report when possible.
Can I use a birth time recorded in another time zone?
The hours option interprets both local times in this device's zone; it cannot accept a separate birthplace zone or explicit UTC offset. If the record's zone differs, do not paste its clock time unchanged and assume a travel-aware result. You can still calculate civil age with times off. For an elapsed-instant question, establish the actual instants and relevant offsets in a suitable zone-aware tool.
Why is the next-birthday countdown zero?
The reference date is already the selected anniversary. This tool includes that day's birthday rather than skipping straight to next year. Advance the reference by one date to see the following anniversary. For February 29 births, check which substitute is selected in a common year; February 28 and March 1 can give different countdowns.
Can I turn completed weeks back into an exact birth date?
Not from completed weeks alone. The week total is rounded down, so a value of four weeks can accompany day totals from 28 through 34. The lost remainder cannot be recovered by multiplying by seven. Use the original total-day count or birth date if it is available; do not treat a rounded week label as an exact elapsed duration.
Will an old Julian date give the historical age?
Only after its calendar meaning is established and, if necessary, converted. The fields apply Gregorian rules even before local Gregorian adoption. Entering the same numerals from a Julian register does not convert them. Keep the original inscription and conversion assumptions with your notes; a weekday or age calculated from an unconverted label may be misleading.