我怎么能从今天的日期和一个人的出生日期找到一个python年龄?出生日期来自Django模型中的DateField。


当前回答

延伸到丹尼·w·阿代尔回答,得到月也

def calculate_age(b):
    t = date.today()
    c = ((t.month, t.day) < (b.month, b.day))
    c2 = (t.day< b.day)
    return t.year - b.year - c,c*12+t.month-b.month-c2

其他回答

import datetime

今天的日期

td=datetime.datetime.now().date() 

你的出生年月日

bd=datetime.date(1989,3,15)

你的年龄

age_years=int((td-bd).days /365.25)
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

更新:使用丹尼的解决方案,效果更好

进口日期时间

def age(date_of_birth):
    if date_of_birth > datetime.date.today().replace(year = date_of_birth.year):
        return datetime.date.today().year - date_of_birth.year - 1
    else:
        return datetime.date.today().year - date_of_birth.year

在你的情况下:

import datetime

# your model
def age(self):
    if self.birthdate > datetime.date.today().replace(year = self.birthdate.year):
        return datetime.date.today().year - self.birthdate.year - 1
    else:
        return datetime.date.today().year - self.birthdate.year

一个比@DannyWAdairs稍微优雅一点的解决方案可能是使用.timetuple()方法[Python-doc]:

from datetime import date

def calculate_age(born):
    today = date.today()
    return today.year - born.year - (today.timetuple()[1:3] < born.timetuple()[1:3])

你可以很容易地使用这个来进一步推广它,将其粒度增加到秒,这样,如果它大于或等于当天的秒数,年龄就会增加,例如born是一个datetime对象:

from datetime import datetime

def calculate_age_with_seconds(born):
    today = datetime.now()
    return today.year - born.year - (today.timetuple()[1:6] < born.timetuple()[1:6])

这对于date或datetime对象都适用。

你可以使用Python 3来完成这一切。只需运行下面的代码就可以了。

# Creating a variables:

greeting = "Hello, "
name = input("what is your name?")
birth_year = input("Which year you were born?")
response = "Your age is "

# Converting string variable to int:

calculation = 2020 - int(birth_year) 


# Printing:

print(f'{greeting}{name}. {response}{calculation}')