我需要能够准确地找到两个日期之间的月数,即使它们跨越不同的年份。我有从这个StackOverflow 线程获得的以下解决方案,但它在日期跨越不同年份时失败。当它跨越一年时有效from datetime import datetimefrom dateutil.relativedelta import relativedeltadate1 = datetime.strptime('2010-01-01', '%Y-%m-%d')date2 = datetime.strptime('2010-12-01', '%Y-%m-%d')diff = relativedelta(date2, date1)number_of_months = diff.monthsprint(number_of_months) # 11当它跨越多年时失败from datetime import datetimefrom dateutil.relativedelta import relativedeltadate1 = datetime.strptime('2010-01-01', '%Y-%m-%d')date2 = datetime.strptime('2012-02-01', '%Y-%m-%d')diff = relativedelta(date2, date1)number_of_months = diff.monthsprint(number_of_months) # 1鉴于此,我考虑了以下解决方案:from datetime import datetimefrom dateutil.relativedelta import relativedeltadef month_diff(date1, date2): if date1.year == date2.year: diff = relativedelta(date2, date1) number_of_months = diff.months else: num_of_days = (date2 - date1).days number_of_months = num_of_days//30 print(number_of_months)date1 = datetime.strptime('2010-01-01', '%Y-%m-%d')date2 = datetime.strptime('2010-12-01', '%Y-%m-%d')date3 = datetime.strptime('2010-01-01', '%Y-%m-%d')date4 = datetime.strptime('2012-02-01', '%Y-%m-%d')month_diff(date1, date2) # 11month_diff(date3, date4) # 25因此,我的问题是,是否有比我目前拥有的更好的解决方案?
1 回答

慕桂英3389331
TA贡献2036条经验 获得超8个赞
关于什么
from datetime import datetime
from dateutil.relativedelta import relativedelta
date1 = datetime.strptime('2010-01-01', '%Y-%m-%d')
date2 = datetime.strptime('2012-02-01', '%Y-%m-%d')
diff = relativedelta(date2, date1)
number_of_months = 12 * diff.years + diff.months
添加回答
举报
0/150
提交
取消