python获取指定时间段内特定规律的日期列表

 更新时间:2021年04月01日 10:42:33   作者: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获取指定时间段内日期列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 实现Python3数组旋转的3种算法实例

    实现Python3数组旋转的3种算法实例

    在本篇文章里小编给大家整理的是一篇关于实现Python3数组旋转的3种算法实例内容,需要的朋友们可以学习参考下。
    2020-09-09
  • python flask中动态URL规则详解

    python flask中动态URL规则详解

    今天小编就为大家分享一篇python flask中动态URL规则详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python和go语言的区别是什么

    python和go语言的区别是什么

    在本篇文章中小编给大家整理的是一篇关于go语言和python的区别点,需要的朋友们可以学习下。
    2020-07-07
  • 详解python中return和print的区别和用途

    详解python中return和print的区别和用途

    在 Python 中,return 和 print 是两种常见的语句,用于在函数中输出信息或返回值,尽管它们看起来相似,但它们有不同的作用和用法,本文将详细介绍 return 和 print 在函数中的区别,并提供丰富的示例代码,以帮助你更好地理解它们的用途
    2023-11-11
  • Python文件循环写入行时防止覆盖的解决方法

    Python文件循环写入行时防止覆盖的解决方法

    今天小编就为大家分享一篇Python文件循环写入行时防止覆盖的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python编程pygame模块实现移动的小车示例代码

    Python编程pygame模块实现移动的小车示例代码

    这篇文章主要介绍了Python编程pygame模块实现移动的小车示例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python Matplotlib绘制多子图详解

    Python Matplotlib绘制多子图详解

    Matplotlib是Python中最受欢迎的数据可视化软件包之一,它是 Python常用的2D绘图库,同时它也提供了一部分3D绘图接口。本文将详细介绍如何通过Matplotlib绘制多子图,以及合并图例和调整子图间距,需要的可以参考一下
    2022-02-02
  • Python 在局部变量域中执行代码

    Python 在局部变量域中执行代码

    这篇文章主要介绍了Python 如何在局部变量域中执行代码,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
    2020-08-08
  • python中mpi4py的所有基础使用案例详解

    python中mpi4py的所有基础使用案例详解

    这篇文章主要介绍了python中mpi4py的所有基础使用,本文通过10个案例给大家详细讲解,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • python求平均值多种方法代码示例

    python求平均值多种方法代码示例

    要求一个列表中的数的平均值,我们可以使用Python来实现,这篇文章主要给大家介绍了关于python求平均值多种方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论