-
1.在开始和结束日期设置范围,这里是从大月到小月生成;
2.可以将下面"月减一和天减一",减法修改成加法 ”月加一和天加一“ 来实现小月到大月。
3.代码里将结果保存到列表中,你可以根据实际情况放到其他类型变量里。
## 开始、结束日期 date_start = '1202' date_end = '0930' ## 全局变量 _list_month_day = [] ## 判断date_start_month月有多少天,并设置date_start_month月的天数 def set_month_days(date_start_month): month = date_start_month ## 31天的月份 month_31day = "01030507081012" ## 30天的月份 month_30day = "04060911" ## 默认day是28天 day = 28 ## 如果 month_31day 或 month_30day 里包含 month 为真,则设置对应天数 if month in month_31day: day = 31 elif month in month_30day: day = 30 ## 给调用者返回天数 return day def add_month_day(): date_start_month = date_start[0:2] date_start_day = date_start[2:4] ## 如果月的第一位是0则取第二位 if date_start_month[:1] == "0": date_start_month = date_start_month[1:2] ## 如果日的第一位是0则取第二位 if str(date_start_day)[:1] == "0": date_start_day = date_start_day[1:2] ## 循环产生月和日 while True: ## 将上一次循环设置成int类型,转回str类型 date_start_month = str(date_start_month) date_start_day = str(date_start_day) ## 如果日等于1号,则月份减一, ## 并调用set_month_days函数,获取本月天数 if date_start_day == "1": ## 月减一 date_start_month = int(date_start_month) - 1 date_start_day = set_month_days(str(date_start_month)) else: ## 天减一 date_start_day = int(date_start_day) - 1 ## month_day值:1.拼接月+日,不足两位,左补0 ## 2.上面运算把月和日转成int型,拼接需要转str型 month_day = "{:0>2}".format(eval(str(date_start_month))) + "{:0>2}".format(eval(str(date_start_day))) ## 将生成的月和日添加到全局变量列表中,方便其他类或方法使用 global _list_month_day _list_month_day.append(month_day) ## 如果当前月日和设置的date_end相等,则退出while循环 if date_end == month_day: break if ( __name__ == 'main' or __name__ == '__main__'): add_month_day(); print(f"\n结果:\n{_list_month_day}")
结果:
__EOF__