# -*- coding: utf-8 -*- """ Created on Wed Nov 1 11:34:08 2023 @author: ZMK """ from datetime import datetime import calendar from dateutil import rrule #根据年月日获取最后一天的日期 def last_day_of_month(year, month, day): d = calendar.monthrange(year, month) last_day = str(year) +"-" +str(month) + "-" + str(d[1]) return last_day def last_day_of_month_start(month): start_date = month.split('-') last_day= last_day_of_month(int(start_date[0]),int(start_date[1]),1) return last_day def get_months_in_year(): return ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月",] def get_months_in_range_ym(start_time, end_time): start=datetime.strptime(start_time,'%Y-%m') end=datetime.strptime(end_time,'%Y-%m') count =rrule.rrule(rrule.MONTHLY,dtstart=start,until=end).count() months=[] for i in range(count) : m = rrule.rrule(rrule.MONTHLY,dtstart=start,until=end).__getitem__(i) formatted_date = m.strftime("%Y-%m") months.append(formatted_date) return months def get_months_in_range_count(start_time, end_time): start=datetime.strptime(start_time,'%Y-%m') end=datetime.strptime(end_time,'%Y-%m') count =rrule.rrule(rrule.MONTHLY,dtstart=start,until=end).count() return count def get_months_in_range(start_time, end_time): start=datetime.strptime(start_time,'%Y-%m') end=datetime.strptime(end_time,'%Y-%m') count =rrule.rrule(rrule.MONTHLY,dtstart=start,until=end).count() months=[] for i in range(count) : m = rrule.rrule(rrule.MONTHLY,dtstart=start,until=end).__getitem__(i) formatted_date = m.strftime("%Y-%m") start_date = formatted_date.split('-') last_day= last_day_of_month(int(start_date[0]),int(start_date[1]),1) months.append(formatted_date+"-01" +"," + last_day) return months