如何编辑现有规则?

问题描述 投票:1回答:2

我想编辑从字符串解析的现有规则以设置UNTIL日期。我怎样才能做到这一点?从理论上讲,我可以修改规则字符串并重新解析它,但是随后变得很复杂。我想简化一下:无论规则涉及多少次出现或直到到达什么日期,我都想用新的UNTIL日期覆盖它。

谢谢。

python python-dateutil
2个回答
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)]

0
投票

截至2019年,我希望使用rrule.replace()方法,例如:

r2 = r1.replace(until=datetime(2013, 7, 20, 0, 0))

© www.soinside.com 2019 - 2024. All rights reserved.