1. 程式人生 > >Python3實現獲取指定日期範圍內的月份列表

Python3實現獲取指定日期範圍內的月份列表

import datetime
from dateutil import rrule

class TimeHelper():
    def getMonthRangList(self, start_month, end_month):
        """
        從開始日期到結束日期查詢存在的月份列表,除去本月的資料
        :param start_month:
        :param end_month:
        :return:
        """
        start_time = datetime.datetime.strptime(start_month, "%Y-%m")
        end_time = datetime.datetime.strptime(end_month, "%Y-%m")
        month_count = rrule.rrule(rrule.MONTHLY, dtstart=start_time, until=end_time).count()
        now_month = datetime.datetime.strptime(str(datetime.datetime.now())[:7], "%Y-%m")
        if start_time == now_month == end_time:
            return []
        else:
            month_list = []
            for x in range(month_count):
                year, month = [int(y) for y in str(start_time)[:7].split("-")]
                month = month + x
                if month > 12:
                    year += 1
                    month -= 12
                elif month < 1:
                    year -= 1
                    month += 12
                year, month = str(year), str(month)
                if len(month) == 1:
                    month = "0" + month
                month_list.append(year + "-" + month)
            if str(now_month)[:7] in month_list:
                month_list.remove(str(now_month)[:7])
            return month_list



s=TimeHelper().getMonthRangList("2018-01","2018-11")
print(s)

效果如圖: