本文示例的引用方式为:
from dateutil.relativedelta import *
from dateutil.rrule import *
关于python的import和名字空间,请参考之前文章:
《Python日期时间datetime库与dateutil库典型示例与详解(1)--datetime库简介&datetime库date类常用例子》
rrule类能依据各种复杂规则(频率、间隔等),在指定的时间段内生成我们需要的时间对象列表;rrule有几个重要参数freq, interval、 count, dtstart、until,我们先看例子:
1、今天开始的后续4个星期六的具体日期
datelist = list(rrule(freq=WEEKLY,byweekday=SA,dtstart=date.today(),count=4))
2、某日期区间的所有星期六和星期天
start_dt = date(2023,1,1)
end_dt = date(2023,3,31)
dts=list(rrule(freq=WEEKLY,byweekday=(SA,SU),dtstart= start_dt,until= end_dt))
3、今天开始的后续4个每双周的星期3的具体日期
today = date.today()
dtlist = list(rrule(freq=WEEKLY,count=4,interval=2,byweekday=WE,dtstart= today))
4、2023年每月的第1个星期六
dts=list(rrule(freq= MONTHLY,count=12,byweekday=SA,dtstart=date(2023,1,1)))
5、dateutil库rrule的常用参数
(1)freq
YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY
重复的频次的时间单位
(2)interval
间隔,比如每2小时,那就是freq= HOURLY, interval = 2
(3) dtstart
开始时间,date和datetime对象都可以
(4)count, until
他们通常是2选1配置,count是多少个位置, until用于时间区间到此时间截止
Count和until组合使用时,那个条件先到先截止.
(5) byweekday
获取星期x是 最常用场景,可以同时抓取几个,例如:byweekday=(SA,SU)