Python生成日期间隔序列列表

昨天在处理日志信息的时候,发现日志信息是按照日期(例如:‘20190101’)建文件夹,分开进行保存的。

我写了个生成时间间隔的方法,可以供大家参考。以下是我的代码。

import datetime


class DateListMaker(object):
def __init__(self):
# 开始日期
self.datestart = '2019-01-01'
# 结束日期
self.dateend = datetime.datetime.now().strftime('%Y-%m-%d')
# 前n天
self.ndayBefore = 5
# 后n天
self.ndayAfter = 5

# 获取两个日期中间的日期列表
def create_date_list(self):
# 转为日期格式
datestart = datetime.datetime.strptime(self.datestart, '%Y%m%d')
dateend = datetime.datetime.strptime(self.dateend, '%Y%m%d')
date_list = []
date_list.append(datestart.strftime('%Y%m%d'))
while datestart < dateend:
datestart += datetime.timedelta(days=+1)
date_list.append(datestart.strftime('%Y%m%d'))
return date_list

# 获取特定日期前N天列表
def create_nday_before_list(self):
before_n_days = []
for i in range(1, self.ndayBefore + 1)[::-1]:
dateInfo = datetime.datetime.strptime(self.datestart, '%Y%m%d') - datetime.timedelta(days=i)
dateInfo = dateInfo.strftime("%Y%m%d")
before_n_days.append(dateInfo)
return before_n_days

# 获取特定日期后N天列表
def create_nday_after_list(self):
after_n_days = []
for i in range(1, self.ndayAfter + 1):
dateInfo = datetime.datetime.strptime(self.datestart, '%Y%m%d') + datetime.timedelta(days=i)
dateInfo = dateInfo.strftime("%Y%m%d")
after_n_days.append(dateInfo)
return after_n_days

以下是使用的方法。

# 初始化类
dataList = DateListMaker()
# 开始日期
dataList.datestart = '20190102'
# 结束日期
dataList.dateend = '20190118'
# N天前
dataList.ndayBefore = 10
# N天后
dataList.ndayAfter = 4

print(dataList.create_date_list())
print(dataList.create_nday_before_list())
print(dataList.create_nday_after_list())

以下是输出结果。

[‘20190102’, ‘20190103’, ‘20190104’, ‘20190105’, ‘20190106’, ‘20190107’, ‘20190108’, ‘20190109’, ‘20190110’, ‘20190111’, ‘20190112’, ‘20190113’, ‘20190114’, ‘20190115’, ‘20190116’, ‘20190117’, ‘20190118’]

[‘20181223’, ‘20181224’, ‘20181225’, ‘20181226’, ‘20181227’, ‘20181228’, ‘20181229’, ‘20181230’, ‘20181231’, ‘20190101’]

[‘20190103’, ‘20190104’, ‘20190105’, ‘20190106’]

The End


已发布

分类

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注