1
我想編輯從字符串解析的現有rrule來設置UNTIL日期。我怎樣才能做到這一點?從理論上講,我可以修改規則字符串並重新解析它,但這會變得複雜。我想簡單一點:無論規則說了多少事件或直到它到達哪個日期,我都想用新的UNTIL日期覆蓋它。如何編輯現有的rrule?
謝謝。
我想編輯從字符串解析的現有rrule來設置UNTIL日期。我怎樣才能做到這一點?從理論上講,我可以修改規則字符串並重新解析它,但這會變得複雜。我想簡單一點:無論規則說了多少事件或直到它到達哪個日期,我都想用新的UNTIL日期覆蓋它。如何編輯現有的rrule?
謝謝。
我不知道這個公共接口,但如果你真的需要然後設置_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)dateutil修補程序在這裏描述https://bugs.launchpad.net/dateutil/+bug/943512來序列化rrule; (2)修改該補丁以序列化UNTIL值; (3)每當設置_until值時,_count值需要設置爲0。 – jacob