【问题标题】:How to make list of datetimes using rrule如何使用 rrule 创建日期时间列表
【发布时间】:2013-11-27 15:35:18
【问题描述】:

我正在创建自己的 .ics 解析器。

我正在使用 icalendar python 模块。它很好用,但我想获取设置了 RRULE 的事件的日期时间列表。

我将开始日期作为日期时间对象实例,RRULE 解析如下:

CaselessDict({'FREQ': ['MONTHLY'], 'INTERVAL': [1], 'BYDAY': ['4TH']})

但我不知道如何根据这两件事制作日期时间列表。

谢谢

【问题讨论】:

    标签: python icalendar rrule


    【解决方案1】:

    您可以使用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)]
    

    根据需要调整参数。

    【讨论】:

    • 所以我必须用一些 IF 和其他来涵盖所有可能性?可能有很多。
    • @Blaskovic 为什么要这样做...您可以从您拥有的字典中传递变量,例如:interval=your_CaselessDict['INTERVAL'] 等...您可能需要为虽然频率...
    • 因为你可以得到这样的东西:WKST=SU;BYDAY=TU,TH 见:kanzaki.com/docs/ical/rrule.html
    • @Blaskovic 好的.. 所以请确保您已经导入了from dateutil.rrule import MO, TU, WE, TH, FR, SA, SU 等常量...并将TU 作为文本映射到 TU 变量...所以它最终为byweekday=[TU,TH] 等等...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    相关资源
    最近更新 更多