Python中如何从出生日期计算年龄

222 投票
19 回答
286632 浏览
提问于 2025-04-15 19:00

我该如何在Python中根据今天的日期和一个人的出生日期来计算年龄呢?这个出生日期是来自Django模型中的一个日期字段。

19 个回答

21
from datetime import date

days_in_year = 365.2425    
age = int((date.today() - birth_date).days / days_in_year)

在Python 3中,你可以对datetime.timedelta进行除法运算:

from datetime import date, timedelta

age = (date.today() - birth_date) // timedelta(days=365.2425)
70
from datetime import date

def calculate_age(born):
    today = date.today()
    try: 
        birthday = born.replace(year=today.year)
    except ValueError: # raised when birth date is February 29 and the current year is not a leap year
        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

更新:使用 Danny 的解决方案,这个更好

426

其实可以更简单地理解,因为在Python中,int(True)的值是1,而int(False)的值是0。而且,比较元组的时候是从左到右进行的。

from datetime import date

def calculate_age(born):
    today = date.today()
    return today.year - born.year - ((today.month, today.day) < (born.month, born.day))

撰写回答