为了账号安全,请及时绑定邮箱和手机立即绑定

准确获取跨越不同年份的两个日期之间的月数的最佳方法

准确获取跨越不同年份的两个日期之间的月数的最佳方法

慕妹3242003 2021-09-11 20:26:10
我需要能够准确地找到两个日期之间的月数,即使它们跨越不同的年份。我有从这个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


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号