You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在dateutil rruleset中正确组合EXRULE与RDATE?

如何在rruleset中正确组合RDATE与EXRULE?

我有一个包含每日重复规则的rruleset,现在尝试将RDATE与EXRULE组合使用。

from dateutil.rrule import rruleset, rrule, DAILY, FR
from datetime import datetime

rules = rruleset()
daily = rrule(freq=DAILY, dtstart=datetime(2022, 10, 12))
rules.rrule(daily)
not_on_friday = rrule(freq=DAILY, byweekday=FR, dtstart=datetime(2022, 10, 12))
but_on_friday_21th = datetime(2022, 10, 21)
rules.exrule(not_on_friday)
rules.rdate(but_on_friday_21th)
print(rules.between(datetime(2022,10,12), datetime(2022,10,24)))

输出结果:

[datetime.datetime(2022, 10, 13, 0, 0), 
 datetime.datetime(2022, 10, 15, 0, 0), # 14日已按预期排除
 datetime.datetime(2022, 10, 16, 0, 0),
 datetime.datetime(2022, 10, 17, 0, 0),
 datetime.datetime(2022, 10, 18, 0, 0),
 datetime.datetime(2022, 10, 19, 0, 0),
 datetime.datetime(2022, 10, 20, 0, 0), 
 datetime.datetime(2022, 10, 22, 0, 0), # 但21日也被排除了
 datetime.datetime(2022, 10, 23, 0, 0)]

令人困惑的是,当我将EXRULE与EXDATE组合使用时却能正常工作:

from dateutil.rrule import rruleset, rrule, DAILY, FR
from datetime import datetime

rules = rruleset()
daily = rrule(freq=DAILY, dtstart=datetime(2022, 10, 12))
rules.rrule(daily)
not_on_friday = rrule(freq=DAILY, byweekday=FR, dtstart=datetime(2022, 10, 12))
but_also_not_on_the_22th_a_saturday = datetime(2022, 10, 22)
rules.exrule(not_on_friday)
rules.exdate(but_also_not_on_the_22th_a_saturday)
print(rules.between(datetime(2022,10,12), datetime(2022,10,24)))

输出结果:

[datetime.datetime(2022, 10, 13, 0, 0),
 datetime.datetime(2022, 10, 15, 0, 0), # 14日仍被排除
 datetime.datetime(2022, 10, 16, 0, 0),
 datetime.datetime(2022, 10, 17, 0, 0),
 datetime.datetime(2022, 10, 18, 0, 0),
 datetime.datetime(2022, 10, 19, 0, 0),
 datetime.datetime(2022, 10, 20, 0, 0), # 22日也按预期被排除
 datetime.datetime(2022, 10, 23, 0, 0)]

那么,如果可行的话,我该如何在rruleset中正确组合RDATE与EXRULE呢?


内容的提问来源于stack exchange,提问作者Jean Zombie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:25:29