每周一次,为期三周,然后一周不再重复

时间:2018-04-11 01:33:22

标签: python python-dateutil rrule

我使用了来自python rruledateutil,并且不知道如何为以下示例创建一个rruleset:

  • 星期一,连续三周。然后一周没有,然后连续三周,一个没有,依此类推。

有关为此创建套期(套)的任何建议吗?

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是每隔4周使用rruleset WEEKLY套件和相应的套件:

from dateutil.rrule import rrule, rruleset
from dateutil.rrule import WEEKLY

from dateutil.relativedelta import relativedelta
from datetime import datetime, timedelta

dtstart = datetime(2011, 1, 1)

rrset = rruleset()

weekly_rule = rrule(freq=WEEKLY, dtstart=dtstart)
every_4_weeks = rrule(freq=WEEKLY, interval=4,
                      dtstart=dtstart + relativedelta(weeks=4))

rrset.rrule(weekly_rule)
rrset.exrule(every_4_weeks)

rrset.between(dtstart, dtstart + timedelta(days=65))

结果:

[datetime.datetime(2011, 1, 8, 0, 0),
 datetime.datetime(2011, 1, 15, 0, 0),
 datetime.datetime(2011, 1, 22, 0, 0),
 datetime.datetime(2011, 2, 5, 0, 0),
 datetime.datetime(2011, 2, 12, 0, 0),
 datetime.datetime(2011, 2, 19, 0, 0),
 datetime.datetime(2011, 3, 5, 0, 0)]

它的工作方式是weekly_rule每周生成一个日期,every_4_weeks每隔4周生成一次,从dtstart后的第4周开始。这为你提供了3对1的时间表。