Python中如何从出生日期计算年龄
我该如何在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))