如何用Python计算两个日期之间的年份差?

102 投票
15 回答
131771 浏览
提问于 2025-04-16 08:30

有没有更有效的方法来做下面这个?我想要计算两个日期之间的年份差,并把结果作为一个单一的数值。如果你有好的建议,请告诉我。

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

这个库适合计算完整的年份(比如一个人的年龄)。如果你想要更精确的年份,比如小数部分的年份,那就需要加上月份、天数、小时等等,直到你得到想要的精度。

撰写回答