我需要能夠準(zhǔn)確地找到兩個(gè)日期之間的月數(shù),即使它們跨越不同的年份。我有從這個(gè)StackOverflow 線程獲得的以下解決方案,但它在日期跨越不同年份時(shí)失敗。當(dāng)它跨越一年時(shí)有效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當(dāng)它跨越多年時(shí)失敗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貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
關(guān)于什么
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
添加回答
舉報(bào)
0/150
提交
取消