三种方法
1.比较基本的 获取两个日期之间相差多少月份,然后逐月相加,当然,按12个月一循环,nowMonth//12为需要加的年份,nowMonth%12+1为月份数。
import datetime
start = '2015-07-28'
end = '2021-01-12'
def getMonth_1(start,end):
startDate = datetime.datetime.strptime(start, '%Y-%m-%d')
endDate = datetime.datetime.strptime(end, '%Y-%m-%d')
months = (endDate.year - startDate.year) * 12 + endDate.month - startDate.month
print(months)
month_range=[]
for x in range(0,months+1):
nowMonth=(startDate.month-1+x)
date='%s-%s'%(startDate.year+nowMonth//12,nowMonth%12+1)
month_range.append(date)
return month_range
2.其实还是第一种思路,只是看着比较简洁
def getMonth_2(start,end):
startDate = datetime.datetime.strptime(start, '%Y-%m-%d')
endDate = datetime.datetime.strptime(end, '%Y-%m-%d')
months = (endDate.year - startDate.year) * 12 + endDate.month - startDate.month
print(months)
month_range = ['%s-%s' % (startDate.year + mon // 12, mon % 12 + 1)
for mon in range(startDate.month - 1, startDate.month + months)]
return month_range
3.取巧的一种方法 我们知道pandas 的date_range方法可以取到两个日期之间所有的日期,然后我们日期格式只取年月,然后直接去重,就获得了所需月份。(set去重之后变成无序,所以用sort重新排序一下)
import pandas as pd
def getMonth_3(start,end):
date_list = [x for x in pd.date_range(start, end).strftime('%Y-%m')]
month_range=list(set(date_list))
month_range.sort(key=date_list.index)
return month_range