我有两个日期: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
以避免重复计算那部分差异。
关于python - Python 中的年和日日期差异(无月),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51112430/