您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python获取指定时间段内特定规律的日期列表

51自学网 2021-10-30 22:46:49
  python
这篇教程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获取指定时间段内日期列表内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


python实现合并两个有序列表的示例代码
python 实现mysql自动增删分区的方法
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。