我需要从重复发生的事件中计算下一个可能的日期。从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)