Someone asks how old you are and you say a number without thinking twice. But try to calculate your exact age โ years, months, and days, right now, today โ and the simple subtraction you learned as a kid falls apart fast. The real method: subtract years, then months, then days, and borrow from the level above whenever a step goes negative. Today's year minus your birth year is close, but it's wrong for every day between New Year's and your birthday.
Use the Age Calculator โ to get your exact age instantly, down to the day. Or keep reading to see exactly how the math works and where it trips people up.
Key Takeaways
- Exact age isn't `this year โ birth year`. You have to check whether the birthday has occurred yet, then borrow days and months the same way you'd borrow in subtraction.
- Someone born March 15, 1990 is 36 years, 7 months, 23 days old on November 7, 2026 โ not "36" flat, and not a rounded "36.6" either.
- Total days lived isn't years ร 365. Leap years mean it's almost always a few days more.
Why "this year minus birth year" gets it wrong
Say you were born in November and it's currently March. Subtract your birth year from the current year and you get a number that's one too high. You haven't hit your birthday yet this year, so you're still a year younger than that math says.
This is the classic age-calculation mistake. It's why spreadsheet formulas built on a bare year subtraction quietly report people as a year older than they are for part of every year. The error only clears when the birthday finally lands.
The fix is one comparison: check whether today's month-and-day is before or after your birth month-and-day.
The actual formula to calculate exact age
Here's the real version, the one an age calculator runs behind the scenes:
```
years = current_year - birth_year
months = current_month - birth_month
days = current_day - birth_day
if days < 0:
days += days_in_month(previous month) # borrow from the month
months -= 1
if months < 0:
months += 12 # borrow from the year
years -= 1
```
Each level borrows from the one above when its subtraction goes negative, exactly like borrowing in long subtraction. The year check you learned as a kid is just the last line: if your birthday hasn't happened yet this year, the months go negative and you lose a year.
Worked example: born March 15, 1990. Today is November 7, 2026.
Result: 36 years, 7 months, 23 days. Not 36.6 years, not "about 36" โ an exact figure, because the calendar isn't uniform and the math has to account for that.
What happens to a February 29 birthday in a non-leap year
If you were born on February 29, you only have a real birthday once every four years. Occasionally it's longer: century years skip the leap day unless they divide by 400, which is why 2000 was a leap year but 2100 won't be (NIST). So what happens to your "exact age" in the years when February 29 doesn't exist?
The usual convention is to treat February 28 as the stand-in in non-leap years. Java's standard date API, for example, spells the rule out in its `LocalDate.plusYears` documentation (Oracle). Adding a year to 2008-02-29 "would result in the invalid date 2009-02-29," so "the last valid day of the month, 2009-02-28, is selected instead." .NET's `DateTime.AddYears` documents the same rule: February 29, 2012 plus one year returns February 28, 2013 (Microsoft Learn).
A person born February 29, 2024 therefore rolls to February 28 in 2025, 2026, and 2027, then gets a real February 29 again in 2028. It's a small rule, but it's exactly the kind of edge case that breaks a naive `(today - birthday).days / 365` formula โ that formula doesn't reason about calendar dates at all, it just averages.
Why "days รท 365" isn't exact either
Another shortcut is to take total days alive and divide by 365. It's close, but it drifts. Earth takes about 365.25 days to orbit the Sun, so the calendar adds a day roughly every four years to catch up (NASA Space Place). That means roughly every fourth year has 366 days, not 365.
Over a lifetime that adds up. Someone who's lived exactly 36 years has lived through 9 leap years in that stretch โ 36 รท 4, give or take a boundary case. Their true day count therefore runs about 9 days higher than `36 ร 365` suggests. Not a rounding error you can shrug off if you're chasing an exact figure, like a "10,000 days old" milestone.
For that same March 15, 1990 birth date, total days lived as of November 7, 2026 is 13,386 days โ 1,912 full weeks and 2 days. Compare that to `36 ร 365 = 13,140`, and you can see the 246-day gap that pure year-multiplication misses. Nine of those days are the leap days; the other 237 are the 7 months and 23 days past the last birthday.
Where the exact number actually matters
Frequently Asked Questions
Is my age always "this year minus my birth year"?
Only after your birthday has happened this year. Before it, subtract one more โ see the worked example above.
Why does my age calculator show months and days, not just years?
Because "36 years old" hides ten months of range. 36 years 1 month and 36 years 11 months are both "36" โ months and days narrow that down to an exact figure.
What happens to someone born on February 29 in a non-leap year?
Their age milestone lands on February 28 instead, the same "last valid day of the month" rule that standard date libraries such as Java's `LocalDate` apply. They get an actual February 29 birthday again every fourth year.
How many days old am I, exactly?
Take the years-months-days breakdown, add up the days in every month between then and now (including leap-year Februaries), or just let the Age Calculator do the count for you.
Do the math without doing the math
You don't need to run the borrow-and-carry steps above by hand every time โ that's what the Age Calculator is for. Enter a birth date and it returns the exact years, months, and days as of today, no spreadsheet gymnastics required. If you're instead trying to find the gap between two arbitrary dates that aren't "birth date to today," use the Date Difference Calculator. It runs the same underlying logic for a project deadline, a lease term, or the days until an event.
The Bottom Line
Exact age is a calendar problem, not a division problem. Subtract years, then months, then days, borrowing at each step when the subtraction goes negative. And remember that a Feb 29 birthday rolls to Feb 28 in the years it doesn't exist. Skip the manual borrowing with the Age Calculator โ.