我需要从重复发生的事件中计算下一个可能的日期。从vcalender获得了以下信息:

DTSTART;TZID=Europe/Berlin:20130711T130000
RRULE:FREQ=WEEKLY;BYDAY=TH


使用http://pythonhosted.org/caldav/按日期获取事件。

start_date = datetime.today()
end_date = start_date + timedelta(days=7)

calendar.date_search(start_date, end_date)


但是,此信息中今天有一个大事,是否可以使用此信息计算/打印正确的日期?

y.getChildValue('rrule')
    u'FREQ=WEEKLY;BYDAY=TH'

y.getChildValue('dtstart')
    datetime.datetime(2013, 7, 11, 13, 0, tzinfo=<tzicalvtz 'Europe/Berlin'>)

最佳答案

如果您愿意使用其他模块,请尝试python-dateutil,例如

import dateutil.rrule as rrule
rule = rrule.rrulestr(y.getChildValue('rrule'), dtstart=y.getChildValue('dtstart'))
rule.after(y.getChildValue('dtstart'))


应该返回:

datetime.datetime(2013, 7, 18, 13, 0)

09-25 20:36