【发布时间】:2013-11-27 15:35:18
【问题描述】:
我正在创建自己的 .ics 解析器。
我正在使用 icalendar python 模块。它很好用,但我想获取设置了 RRULE 的事件的日期时间列表。
我将开始日期作为日期时间对象实例,RRULE 解析如下:
CaselessDict({'FREQ': ['MONTHLY'], 'INTERVAL': [1], 'BYDAY': ['4TH']})
但我不知道如何根据这两件事制作日期时间列表。
谢谢
【问题讨论】:
我正在创建自己的 .ics 解析器。
我正在使用 icalendar python 模块。它很好用,但我想获取设置了 RRULE 的事件的日期时间列表。
我将开始日期作为日期时间对象实例,RRULE 解析如下:
CaselessDict({'FREQ': ['MONTHLY'], 'INTERVAL': [1], 'BYDAY': ['4TH']})
但我不知道如何根据这两件事制作日期时间列表。
谢谢
【问题讨论】:
您可以使用python-dateutil库来生成rrules,例如:
from dateutil.rrule import rrule, MONTHLY
dts = list(rrule(MONTHLY, interval=10, byweekday=4, count=3))
# [datetime.datetime(2013, 11, 29, 15, 44, 45), datetime.datetime(2014, 9, 5, 15, 44, 45), datetime.datetime(2014, 9, 12, 15, 44, 45)]
根据需要调整参数。
【讨论】:
interval=your_CaselessDict['INTERVAL'] 等...您可能需要为虽然频率...
from dateutil.rrule import MO, TU, WE, TH, FR, SA, SU 等常量...并将TU 作为文本映射到 TU 变量...所以它最终为byweekday=[TU,TH] 等等...