2008-12-15 4 views
2

예를 들어 rrule 인스턴스가 있습니다.기존 rrule을 사용하여 추가 발생 집합을 생성합니다.

 r = rrule(WEEKLY, byweekday=SA, count=10, dtstart=parse('20081001')) 

여기서 dtstart 및 byweekday는 변경 될 수 있습니다.

이 rrule에서 다음 10 개의 날짜를 생성하려면 어떻게해야합니까? r의 _dtstart 멤버에 에 새 값을 할당 할 수 있습니까? 그게 효과가있는 것 같지만 잘 모르겠습니다.

 r._dtstart = list(r)[-1] or something like that 

그렇지 않으면 내가 원래 인스턴스의 새로운 RRULE 및 액세스 _dtstart, _count, _byweekday 등을 만들 것 같아요.

편집 :

좀 더 그것에 대해 생각했습니다, 나는 내가 무슨 일을해야하는 것은 내가 처음 RRULE 인스턴스를 만들 때 '계산'인수를 생략 생각

. 나는 아직도

instances = list(r[0:10]) 

다음 나중에 좀 더

more = list(r[10:20]) 

나는 그

답변

1

첫째로 모든 추함없이 내 문제를 해결할 생각 r._dtstart = list(r)[-1]를 얻을 수 있습니다 열 명 발생을 나는 RRULE를 처음 사용할 때 얻을 수 있습니다 원래 날짜 순서대로 마지막 날짜를 알려줍니다. 수정하지 않고 새 시퀀스의 시작 부분에 사용하면 중복 날짜가됩니다. 즉 첫 번째 시퀀스의 마지막 날짜가 새 시퀀스의 첫 번째 날짜와 같을 것입니다. 당신이 원하는 : 분명히 개인 속성 의도대로

>>> from dateutil.rrule import * 
>>> import datetime 

>>> r = rrule(WEEKLY, byweekday=SA, count=10, dtstart=datetime.datetime(2008,10,01)) 
>>> print list(r) 
[datetime.datetime(2008, 10, 4, 0, 0), datetime.datetime(2008, 10, 11, 0, 0), datetime.datetime(2008, 10, 18, 0, 0), datetime.datetime(2008, 10, 25, 0, 0), datetime.datetime(2008, 11, 1, 0, 0), datetime.datetime(2008, 11, 8, 0, 0), datetime.datetime(2008, 11, 15, 0, 0), datetime.datetime(2008, 11, 22, 0, 0), datetime.datetime(2008, 11, 29, 0, 0), datetime.datetime(2008, 12, 6, 0, 0)] 
>>> r._dtstart = r[-1] 
>>> print list(r) 
[datetime.datetime(2008, 12, 6, 0, 0), datetime.datetime(2008, 12, 13, 0, 0), datetime.datetime(2008, 12, 20, 0, 0), datetime.datetime(2008, 12, 27, 0, 0), datetime.datetime(2009, 1, 3, 0, 0), datetime.datetime(2009, 1, 10, 0, 0), datetime.datetime(2009, 1, 17, 0, 0), datetime.datetime(2009, 1, 24, 0, 0), datetime.datetime(2009, 1, 31, 0, 0), datetime.datetime(2009, 2, 7, 0, 0)] 

또한, 고려 가난한 형태는 r._dtstart 조작합니다.

대신 같은 것을 할 : (당신이 _byweekday보고 할 수도 있지만)

>>> r = rrule(WEEKLY, byweekday=SA, count=10, dtstart=datetime.datetime(2008,10,01)) 
>>> r2 = rrule(WEEKLY, byweekday=SA, count=r.count(), dtstart=r[-1] + datetime.timedelta(days=1)) 
>>> print list(r) 
[datetime.datetime(2008, 10, 4, 0, 0), datetime.datetime(2008, 10, 11, 0, 0), datetime.datetime(2008, 10, 18, 0, 0), datetime.datetime(2008, 10, 25, 0, 0), datetime.datetime(2008, 11, 1, 0, 0), datetime.datetime(2008, 11, 8, 0, 0), datetime.datetime(2008, 11, 15, 0, 0), datetime.datetime(2008, 11, 22, 0, 0), datetime.datetime(2008, 11, 29, 0, 0), datetime.datetime(2008, 12, 6, 0, 0)] 
>>> print list(r2) 
[datetime.datetime(2008, 12, 13, 0, 0), datetime.datetime(2008, 12, 20, 0, 0), datetime.datetime(2008, 12, 27, 0, 0), datetime.datetime(2009, 1, 3, 0, 0), datetime.datetime(2009, 1, 10, 0, 0), datetime.datetime(2009, 1, 17, 0, 0), datetime.datetime(2009, 1, 24, 0, 0), datetime.datetime(2009, 1, 31, 0, 0), datetime.datetime(2009, 2, 7, 0, 0), datetime.datetime(2009, 2, 14, 0, 0)] 

이 코드는 RRULE의 개인 속성에 액세스하지 않습니다.

관련 문제