Skip to main content
 首页 » 编程设计

python之Python 中的年和日日期差异(无月)

2025年05月04日22zhenyulu

我有两个日期:2005/04/10 和 2018/02/11。

以下代码计算年、月、日的差值:

from datetime import datetime 
from dateutil.relativedelta import relativedelta 
start_date = datetime(2005,4,10) 
end_date = datetime(2018,2,11) 
difference = relativedelta(end_date, start_date) 
print(difference.years) 
print(difference.months) 
print(difference.days) 

输出是:

12 
10 
1 

12年10个月零1天。问题是我对几个月不感兴趣,我只想要几年和几天。在我的示例中,它应该是 12 年零 306 天。我知道一个很好的近似值是 10 个月 * 30 = 300 天,但结果是 301,而不是 306。我想精确计算天数,同时考虑闰月和每个月的天数差异。 Python 中是否有任何内置方法可以做到这一点?

我已经对 StackOverflow 进行了研究以找到答案,但所有与我的问题相关的答案都没有回答我的问题。

请您参考如下方法:

在您已经编写的代码之后,执行以下操作:

mid_date = datetime(start_date.year + difference.years, start_date.month, start_date.day) 
print((end_date - mid_date).days) 

这为您的示例输入提供了 307。

想法是将原始 start_date 偏移 difference.years 以避免重复计算那部分差异。