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

我需要能够准确地找到两个日期之间的月数,即使它们跨越不同的年份。我有从这个StackOverflow 线程获得的以下解决方案,但它在日期跨越不同年份时失败。


当它跨越一年时有效


from datetime import datetime

from dateutil.relativedelta import relativedelta


date1 = 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.months

print(number_of_months) # 11

当它跨越多年时失败


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 = diff.months

print(number_of_months) # 1

鉴于此,我考虑了以下解决方案:


from datetime import datetime

from dateutil.relativedelta import relativedelta



def 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) # 11

month_diff(date3, date4)  # 25

因此,我的问题是,是否有比我目前拥有的更好的解决方案?


慕妹3242003
浏览 167回答 1
1回答

慕桂英3389331

关于什么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 = 12 * diff.years + diff.months
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python