我想编辑从字符串中解析的现有rrule来设置UNTIL日期。我怎样才能做到这一点?从理论上讲,我可以修改规则字符串并重新解析它,但后来变得复杂了。我想说的很简单:无论规则说明发生了多少次,或者直到它发生的日期,我都希望用新的UNTIL日期覆盖它。
感谢。
答案 0 :(得分:1)
我不知道这方面的公共接口,但如果你真的需要直接设置_until
属性似乎工作。我应该警告你,使用它是一种不好的做法,这个代码可能会被dateutil
的未来版本打破。
>>> r = rrule(DAILY,dtstart=datetime(2013,7,15,0,0,0), until=datetime.now())
>>> list(r)
[datetime.datetime(2013, 7, 15, 0, 0),
datetime.datetime(2013, 7, 16, 0, 0),
datetime.datetime(2013, 7, 17, 0, 0),
datetime.datetime(2013, 7, 18, 0, 0),
datetime.datetime(2013, 7, 19, 0, 0),
datetime.datetime(2013, 7, 20, 0, 0),
datetime.datetime(2013, 7, 21, 0, 0),
datetime.datetime(2013, 7, 22, 0, 0),
datetime.datetime(2013, 7, 23, 0, 0)]
>>> r._until = datetime(2013, 7, 20, 0, 0)
>>> list(r)
[datetime.datetime(2013, 7, 15, 0, 0),
datetime.datetime(2013, 7, 16, 0, 0),
datetime.datetime(2013, 7, 17, 0, 0),
datetime.datetime(2013, 7, 18, 0, 0),
datetime.datetime(2013, 7, 19, 0, 0),
datetime.datetime(2013, 7, 20, 0, 0)]
答案 1 :(得分:0)
从2019年开始,我希望使用rrule.replace()
方法,例如:
r2 = r1.replace(until=datetime(2013, 7, 20, 0, 0))