Calculating age in Python

Here’s the Python method I was using to calculate someone’s age from a date object:

def calculateAge(born):
    """Calculate the age of a user."""
    today = date.today()
    birthday = date(today.year, born.month, born.day)
    if birthday > today:
        return today.year - born.year - 1
    else:
        return today.year - born.year

If you’re into Python you might just like to see if you spot the bug in this code — I didn’t!

Anyway, today we had an active user on the site who was born on February 29 in a leap year. And of course, that is the bug in the code I was using. I fixed it by adding an exception handler:

try:
    birthday = date(today.year, born.month, born.day)
except ValueError:
    # Raised when person was born on 29 February and the current
    # year is not a leap year.
    birthday = date(today.year, born.month, born.day - 1)

Leave a Reply

You must be logged in to post a comment.