三种方法
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
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...





