2

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

谢谢。

4

2 回答 2

2

我不知道这个的公共接口,但如果你真的需要那么_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)]
于 2013-07-22T22:45:32.280 回答
2

截至 2019 年,我更喜欢这种rrule.replace()方法,例如:

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

于 2019-12-19T02:50:44.990 回答