Python program to calculate age in year

Given birth date in y/m/d format, write a Python program to find the present age in years.

Examples:

Input : 1997/2/3
Output : 21 years (for present year i.e 2018)

Input : 2010/12/25
Output : 8 years (for present year i.e 2018)

Approach # 1:
The naive approach to find the current age in years is to find the difference between the current year and birth year. Refer the Naive appraoch from here.

Approach #2: Using datetime module
Python provides datetime module to deal with all datetime related issues in python. Using datetime we can find the age by subtracting birth year from current year. Along with this, we need to focus on the birth month and birthday. For this, we check if current month and date are less than birth month and date. If yes subtract 1 from age, otherwise 0.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to  calculate age in years
  
from datetime import date
  
def calculateAge(birthDate):
    today = date.today()
    age = today.year - birthDate.year - 
         ((today.month, today.day) <
         (birthDate.month, birthDate.day))
  
    return age
      
# Driver code 
print(calculateAge(date(1997, 2, 3)), "years")

chevron_right


Output:

21 years

 
Approach #3 : Efficient datetime approach
The above approaches do not deal with a special case i.e. when birth date is February 29 and the current year is not a leap year. This case has to be raised as an exception because the calculation of birthdate may be inaccurate. This method includes try and catch for this exception.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to  calculate age in years
from datetime import date
  
def calculateAge(born):
    today = date.today()
    try
        birthday = born.replace(year = today.year)
  
    # raised when birth date is February 29
    # and the current year is not a leap year
    except ValueError: 
        birthday = born.replace(year = today.year,
                  month = born.month + 1, day = 1)
  
    if birthday > today:
        return today.year - born.year - 1
    else:
        return today.year - born.year
          
# Driver code
print(calculateAge(date(1997, 2, 3)), "years")

chevron_right


Output:

21 years

 

Approach #4: Using division

In this approach, we calculate the number of date from the birth date till current date. Divide the number of date by the days in a year i.e 365.2425.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to  calculate age in years
from datetime import date
  
def calculateAge(birthDate):
    days_in_year = 365.2425    
    age = int((date.today() - birthDate).days / days_in_year)
    return age
          
# Driver code
print(calculateAge(date(1997, 2, 3)), "years")

chevron_right


Output:

21 years


My Personal Notes arrow_drop_up


If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.