2013-07-22 26 views
1

我想編輯從字符串解析的現有rrule來設置UNTIL日期。我怎樣才能做到這一點?從理論上講,我可以修改規則字符串並重新解析它,但這會變得複雜。我想簡單一點:無論規則說了多少事件或直到它到達哪個日期,我都想用新的UNTIL日期覆蓋它。如何編輯現有的rrule?

謝謝。

回答

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

謝謝。我做了你所說的,並結合其他一些改變來完成這項工作。這些修改包括:(1)dateutil修補程序在這裏描述https://bugs.launchpad.net/dateutil/+bug/943512來序列化rrule; (2)修改該補丁以序列化UNTIL值; (3)每當設置_until值時,_count值需要設置爲0。 – jacob