如何用Python计算两个日期之间的年份差?
有没有更有效的方法来做下面这个?我想要计算两个日期之间的年份差,并把结果作为一个单一的数值。如果你有好的建议,请告诉我。
from datetime import datetime
start_date = datetime(2010,4,28,12,33)
end_date = datetime(2010,5,5,23,14)
difference = end_date - start_date
difference_in_years = (difference.days + difference.seconds/86400)/365.2425
15 个回答
18
只需这样做:
from dateutil.relativedelta import relativedelta
myBirthday = datetime.datetime(1983,5,20,0,0,0,0)
now = datetime.datetime.now()
difference = relativedelta(now, myBirthday)
print("My years: "+str(difference.years))
30
我用这个来计算一个人的年龄:
import datetime
dob = datetime.date(1980, 10, 10)
def age():
today = datetime.date.today()
years = today.year - dob.year
if today.month < dob.month or (today.month == dob.month and today.day < dob.day):
years -= 1
return years
def age2():
today = datetime.date.today()
this_year_birthday = datetime.date(today.year, dob.month, dob.day)
if this_year_birthday < today:
years = today.year - dob.year
else:
years = today.year - dob.year - 1
return years
146
如果你想要准确的结果,我建议使用dateutil这个库。
from dateutil.relativedelta import relativedelta
difference_in_years = relativedelta(end_date, start_date).years
这个库适合计算完整的年份(比如一个人的年龄)。如果你想要更精确的年份,比如小数部分的年份,那就需要加上月份、天数、小时等等,直到你得到想要的精度。