用relativelta计算日期的奇怪算法



我正在使用relativelta来计算两个日期之间的差异。然而,datetime对象的年份部分似乎没有被识别。如果日期是同一年的月份,则所获得的计算结果是有意义的。

# lease dates
start = json_obj['lease'][0]['start']
end = json_obj['lease'][0]['end']
print(end, start)
2026-10-31 2020-10-07
startdt = datetime.strptime(start, '%Y-%m-%d')
print(startdt)
2020-10-07 00:00:00 
enddt = datetime.strptime(end, '%Y-%m-%d')
print(enddt)
2026-10-31 00:00:00

# Total months
calc = relativedelta.relativedelta(enddt, startdt)
calc.days
24
calc.months
0

没有月份,所以calc.months返回0:

# Total months
calc = relativedelta.relativedelta(enddt, startdt)
print (calc)
relativedelta(years=+6, days=+24)

如果需要12的所有月数或年数,并添加月数:

print (calc.months + calc.years * 12)
72

最新更新