gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 43 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python获取指定时间段内特定规律的日期列表由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言:写小程序时,遇到个需要自定义回归时间的场景,下面是实现的效果图.

    于我需求而言,我只需要用到fixed_interval、weekly、per_month三个方法返回的回归间隔列表就行,最后的这个make_date_from_list方法,是为了能在这里展示效果 。

    tip:没有做异常处理,以及时间格式化之类的。这里只是抛砖引玉给个原型砖头出来.

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

实现代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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获取指定时间段内日期列表内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/qq_41266319/article/details/115342612 。

最后此篇关于python获取指定时间段内特定规律的日期列表的文章就讲到这里了,如果你想了解更多关于python获取指定时间段内特定规律的日期列表的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com