import math
import calendar
import datetime
from datetime import date
from dateutil.rrule import rrule, DAILY
def get_month_day(data):
year = int(data[:4]) # 2018
month = int(data[4:6]) # 08
day_begin = datetime.datetime(year=year, month=month, day=1) # 构造本月1号
date_last_month = day_begin - datetime.timedelta(days=1)
month_s = (date_last_month.strftime("%Y%m"))[4:]
month_range = calendar.monthrange(int(year), int(month_s)) # 本月的天数
month_range_list = []
if month == 1:
time_start = date(year - 1, int(month_s), 1)
time_end = date(year - 1, int(month_s), month_range[1])
for dt in rrule(DAILY, dtstart=time_start, until=time_end):
month_range_list.append(dt.strftime("%Y%m%d"))
else:
time_start = date(year, int(month_s), 1)
time_end = date(year, int(month_s), month_range[1])
for dt in rrule(DAILY, dtstart=time_start, until=time_end):
month_range_list.append(dt.strftime("%Y%m%d"))
last_day_begin = datetime.datetime(year=year, month=int(month_s), day=1) # 构造上月1号
last_date_last_month = last_day_begin - datetime.timedelta(days=1)
last_month_s = (last_date_last_month.strftime("%Y%m"))[4:]
last_month_range = calendar.monthrange(int(year), int(last_month_s)) # 上月的天数
last_month_range_list = []
if month == 1 or 2:
last_time_start = date(year - 1, int(last_month_s), 1)
last_time_end = date(year - 1, int(last_month_s), last_month_range[1])
for dt in rrule(DAILY, dtstart=last_time_start, until=last_time_end):
last_month_range_list.append(dt.strftime("%Y%m%d"))
else:
last_time_start = date(year, int(last_month_s), 1)
last_time_end = date(year, int(last_month_s), last_month_range[1])
for dt in rrule(DAILY, dtstart=last_time_start, until=last_time_end):
last_month_range_list.append(dt.strftime("%Y%m%d"))
print(month_range_list, last_month_range_list)
return month_range_list, last_month_range_list
get_month_day("20181109")
结果:
['20181001', '20181002', '20181003', '20181004', '20181005', '20181006', '20181007',
'20181008', '20181009', '20181010', '20181011', '20181012', '20181013', '20181014',
'20181015', '20181016', '20181017', '20181018', '20181019', '20181020', '20181021',
'20181022', '20181023', '20181024', '20181025', '20181026', '20181027', '20181028',
'20181029', '20181030', '20181031']
['20170901', '20170902', '20170903', '20170904', '20170905', '20170906', '20170907',
'20170908', '20170909', '20170910', '20170911', '20170912', '20170913', '20170914',
'20170915', '20170916', '20170917', '20170918', '20170919', '20170920', '20170921',
'20170922', '20170923', '20170924', '20170925', '20170926', '20170927', '20170928',
'20170929', '20170930']