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获取指定时间段内日期列表内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python获取指定时间差的时间实例详解

    python获取指定时间差的时间实例详解 在分析数据的时间经常需要截取一定范围时间的数据,比如三天之内,两小时前等等时间要求的数据,因此将该部分经常需要用到的功能模块化,方便以后以后用到的时候复用.在此,也分享给大家. import time import sys reload(sys) def get_day_of_day(UTC=False, days=0, hours=0, miutes=0, seconds=0): ''''''' if days>=0,date is larger th

  • Python获取时间范围内日期列表和周列表的函数

    Python获取时间范围内日期列表和周列表的函数 1.获取日期列表 # -*- coding=utf-8 -*- import datetime def dateRange(beginDate, endDate): dates = [] dt = datetime.datetime.strptime(beginDate, "%Y-%m-%d") date = beginDate[:] while date <= endDate: dates.append(date) dt = d

  • Python使用time模块实现指定时间触发器示例

    本文实例讲述了Python使用time模块实现指定时间触发器.分享给大家供大家参考,具体如下: 其实很简单,指定某个时间让脚本处理一个事件,比如说一个get请求~ 任何语言都会有关于时间的各种方法,Python也不例外. help(time)之后可以知道time有2种时间表示形式: 1.时间戳表示法,即以整型或浮点型表示的是一个以秒为单位的时间间隔.这个时间的基础值是从1970年的1月1号零点开始算起. 2.元组格式表示法,即一种python的数据结构表示.这个元组有9个整型内容.分别表示不同的

  • python中实现指定时间调用函数示例代码

    前言 本文主要给大家介绍了关于python指定时间调用函数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 在前面的一篇文章里,可以使用延时调用,在这里采用指定时间来调用函数 例子如下: import asyncio import time def callback(n, loop): print('callback {} invoked at {}'.format(n, loop.time())) async def main(loop): now = loop.ti

  • 使用python将时间转换为指定的格式方法

    时间处理是在进行数据挖掘时很重要的一个方面,在参加比赛的时候很多比赛训练集给的时间和你最终要提交的时间格式是不同的. 我把我遇到的一种情况总结如下: 首先,题目给的格式是2016-09-10 4:23:21,而想要你提交的格式是2016-09-10-4-2(精确到每十分钟).在处理时间数据的时候一般都是将时间字符串转换成datatime对象,或者pandas的Timestamp.可以首先把字符串转换成一个datatime类型,然后用strftime()把datatime类型的时间转换为需要的格式

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

    前言:写小程序时,遇到个需要自定义回归时间的场景,下面是实现的效果图. 于我需求而言,我只需要用到fixed_interval.weekly.per_month三个方法返回的回归间隔列表就行,最后的这个make_date_from_list方法,是为了能在这里展示效果 TIP:没有做异常处理,以及时间格式化之类的.这里只是抛砖引玉给个原型砖头出来. 实现代码: class GetStrategyDedail: today = datetime.date.today() def __init__(

  • Python获取指定日期是"星期几"的6种方法

    目录 weekday() isoweekday() strftime() calendar pendulum Pandas 在Python进行数据分析时,按照日期进行分组汇总也是被需要的,比如会找到销量的周期性规律. 那么在用Python进行数据统计之前,就需要额外增加一步:从指定的日期当中获取星期几.比如2022年2月22日,还正好是正月廿二星期二,于是乎这一天登记结婚的人特别多.本文就以2022-02-22为例,演示Python获取指定日期是“星期几”的6种方法! weekday() dat

  • python获取指定目录下所有文件名列表的方法

    本文实例讲述了python获取指定目录下所有文件名列表的方法.分享给大家供大家参考.具体实现方法如下: 这里python代码实现获取文件名列表的功能,可以指定文件中包含的字符,方便提取特定类型的文件名列表: # -*- coding: utf-8 -*- #~ #------------------------------------------------------------------ #~ module:wlab #~ Filename:wgetfilelist.py #~ Funct

  • mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)

    mysql获取一个时间段中所有日期或者月份 1:mysql获取时间段所有月份 select DATE_FORMAT(date_add('2020-01-20 00:00:00', interval row MONTH),'%Y-%m') date from ( SELECT @row := @row + 1 as row FROM (select 0 union all select 1 union all select 2 union all select 3 union all select

  • JavaScript比较当前时间是否在指定时间段内的方法

    本文实例讲述了JavaScript比较当前时间是否在指定时间段内的方法.分享给大家供大家参考,具体如下: function checkTime(stime, etime) { //开始时间 var arrs = stime.split("-"); var startTime = new Date(arrs[0], arrs[1], arrs[2]); var startTimes = startTime.getTime(); //结束时间 var arre = etime.split(

  • python清除指定目录内所有文件中script的方法

    本文实例讲述了python清除指定目录内所有文件中script的方法.分享给大家供大家参考.具体如下: 将脚本存储为stripscripts.py 调用语法 : python stripscripts.py <directory> 使用范例 : python stripscripts.py d:\myfiles # Hello, this is a script written in Python. See http://www.pyhon.org import os,sys,string,r

  • mysql 获取规定时间段内的统计数据

    mysql 获取规定时间段内的统计数据 按年统计 SELECT count(*), DATE_FORMAT(order_info.create_time, '%Y-%m-%d') AS count_by_date FROM order_info WHERE DATE_FORMAT(order_info.create_time, '%Y') = '2017' GROUP BY count_by_date ORDER BY NULL 按月统计 SELECT count(*), DATE_FORMAT

  • python获取指定路径下所有指定后缀文件的方法

    本文实例讲述了python获取指定路径下所有指定后缀文件的方法.分享给大家供大家参考.具体实现方法如下: # 获取指定路径下所有指定后缀的文件 # dir 指定路径 # ext 指定后缀,链表&不需要带点 或者不指定.例子:['xml', 'java'] def GetFileFromThisRootDir(dir,ext = None): allfiles = [] needExtFilter = (ext != None) for root,dirs,files in os.walk(dir

  • Python获取当前页面内所有链接的四种方法对比分析

    本文实例讲述了Python获取当前页面内所有链接的四种方法.分享给大家供大家参考,具体如下: ''' 得到当前页面所有连接 ''' import requests import re from bs4 import BeautifulSoup from lxml import etree from selenium import webdriver url = 'http://www.testweb.com' r = requests.get(url) r.encoding = 'gb2312'

随机推荐