如何编辑现有的rrule?

时间:2013-07-22 21:34:43

标签: python python-dateutil

我想编辑从字符串中解析的现有rrule来设置UNTIL日期。我怎样才能做到这一点?从理论上讲,我可以修改规则字符串并重新解析它,但后来变得复杂了。我想说的很简单:无论规则说明发生了多少次,或者直到它发生的日期,我都希望用新的UNTIL日期覆盖它。

感谢。

2 个答案:

答案 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))