python获取指定时间段内特定规律的日期列表
作者:JACK_ChenH
这篇文章主要介绍了python获取指定时间段内特定规律的日期列表,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
前言:写小程序时,遇到个需要自定义回归时间的场景,下面是实现的效果图。
于我需求而言,我只需要用到fixed_interval、weekly、per_month三个方法返回的回归间隔列表就行,最后的这个make_date_from_list方法,是为了能在这里展示效果
TIP:没有做异常处理,以及时间格式化之类的。这里只是抛砖引玉给个原型砖头出来。
实现代码:
class GetStrategyDedail: today = datetime.date.today() def __init__(self, begin_date, end_date): self.begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d") self.end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d") def fixed_interval(self, num): """ 固定间隔的类型,直接使用间隔数字 :param num:间隔的天数 :return:不同时间段内,对应策略的执行时间间隔列表 """ detail_list = list() date_num = (self.end_date - self.begin_date).days for i in range(num, date_num+1, num): detail_list.append(i) detail_list.insert(0, 0) return detail_list def weekly(self, i, weeks=1): """ 每周xx,每月xx的数据类型 :param i:0-星期一,1-星期二,2-星期三,3-星期四,4-星期五,5-星期六,6-星期日 :param weeks:间隔周数,默认间隔一周 :return:不同时间段内,对应策略的执行时间间隔列表 """ while self.begin_date.weekday() != i: self.begin_date += datetime.timedelta(days=1) num = (self.begin_date.date() - self.today).days fixed_list = self.fixed_interval(weeks * 7) fixed_list.insert(0, num) return fixed_list def per_month(self, date): """ date:指定要获取的每个月的日期 :return:不同时间段内,对应策略的执行时间间隔列表 """ date_list = list() specific_list = list() year = self.begin_date.year begin_month = self.begin_date.month end_month = self.end_date.month day = self.end_date.day while begin_month <= end_month: designated_date = f'{year}-{begin_month}-{date}' date_list.append(datetime.datetime.strptime(designated_date, "%Y-%m-%d")) begin_month += 1 for specific_date in date_list: num = (specific_date.date() - self.today).days if num > 0: specific_list.append(num) if day < date: specific_list.pop() return specific_list def make_date_from_list(self, num, interval=1, mode='day'): """ :param interval: 间隔的周数,默认为1(每周) :param num:根据mode来区分,分表代表:间隔的天数,周几(0-6/周一-周日),指定的月日期 :param mode:day, week, month :return: 不同时间段内,对应策略的执行时间间隔列表 """ date_list = list() if mode == 'day': details_list = self.fixed_interval(num) elif mode == 'week': details_list = self.weekly(num, interval) elif mode == 'month': details_list = self.per_month(num) first_date = self.today + datetime.timedelta(details_list[0]) if mode == 'day': for i in details_list: date = self.begin_date.date() + datetime.timedelta(i) date_list.append(date.isoformat()) elif mode == 'month': for i in details_list: date = self.today + datetime.timedelta(i) date_list.append(date.isoformat()) else: for i in details_list[1:]: date = first_date + datetime.timedelta(i) date_list.append(date.isoformat()) return date_list
到此这篇关于python获取指定时间段内特定规律的日期列表的文章就介绍到这了,更多相关python获取指定时间段内日期列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- 自动在Windows中运行Python脚本并定时触发功能实现
- 实现Windows下设置定时任务来运行python脚本
- 如何给windows设置定时任务并运行python脚本
- python 实现定时任务的四种方式
- python中用Scrapy实现定时爬虫的实例讲解
- Python爬虫定时计划任务的几种常见方法(推荐)
- python实现定时发送邮件到指定邮箱
- python实现定时发送邮件
- python脚本定时发送邮件
- Python实现FTP文件定时自动下载的步骤
- python爬虫调度器用法及实例代码
- scrapy处理python爬虫调度详解
- 简单的Python调度器Schedule详解
- python编写网页爬虫脚本并实现APScheduler调度
- Python使用定时调度任务的方式