工具类文件名称:Helper.py
import datetime
'''
日期处理工具类
'''
class DateHelper(object):
'''
获取指定日期范围内的日期列表
'''
def get_date_list(self, date_start, date_end):
datestart = datetime.datetime.strptime(date_start, '%Y-%m-%d')
dateend = datetime.datetime.strptime(date_end, '%Y-%m-%d')
list = []
while datestart <= dateend:
list.append(datestart.strftime('%Y-%m-%d'))
datestart += datetime.timedelta(days=1)
return list
'''
获取指定日期范围内的自然周以及自然周的日期列表
跨年的日期是否合并: is_merge
'''
def get_week_list(self, date_start, date_end, is_merge=True):
list = {}
datestart = datetime.datetime.strptime(date_start, '%Y-%m-%d')
dateend = datetime.datetime.strptime(date_end, '%Y-%m-%d')
while datestart <= dateend:
week = str(datestart.strftime('%Y-%W'))
if week not in list:
list[week] = []
list[week].append(datestart.strftime('%Y-%m-%d'))
datestart += datetime.timedelta(days=1)
if False == is_merge:
return list
else:
flag = ''
_list = {}
for week in list:
if date_start in list[week] or date_end in list[week]:
_list[week] = list[week]
else:
if len(list[week]) == 7:
_list[week] = list[week]
else:
if flag not in _list:
_list[week] = list[week]
flag = week
else:
_list[flag] = _list[flag] + list[week]
flag = ''
return _list
'''
获取指定日期范围内的自然月及每个自然月里面的日期列表
'''
def get_month_list(self, date_start, date_end):
list = {}
datestart = datetime.datetime.strptime(date_start, '%Y-%m-%d')
dateend = datetime.datetime.strptime(date_end, '%Y-%m-%d')
while datestart <= dateend:
month = datestart.strftime('%Y-%m')
if month not in list:
list[month] = []
list[month].append(datestart.strftime('%Y-%m-%d'))
datestart += datetime.timedelta(days=1)
return list
if __name__ == '__main__':
pass
应用 : demo.py
from Helper import DateHelper
class Test(object):
def run(self):
logic = DateHelper()
list = logic.get_week_list('2019-01-01', '2021-01-27')
for week in list:
print('week is %s' % (week))
print(
list[week]
)
print(
'--------------------------------------------------------'
)
list = logic.get_month_list('2019-01-01', '2021-01-27')
for month in list:
print('month is %s' % (month))
print(
list[month]
)
def run():
app = Test()
app.run()
if __name__ == '__main__':
run()