【问题标题】:Python Creating Recurrence EventsPython 创建重复事件
【发布时间】:2020-11-17 06:25:19
【问题描述】:

我无法在一天中每个用户定义的小时后创建重复的 Python 事件。 Recurrence 仅在每个定义的小时后返回 1 个事件。

例如,如果我想在系统中每 2 小时创建一次清洁工作。因此,如果当前时间为 13,则应为这些时间创建事件 15、17、19、21、23。 但我的代码一天只创建 1 个工作。

start_date = datetime.now().date()
end_date = start_date

start_date = datetime.combine(start_date, time())           
end_date = datetime.combine(end_date, time())

假设开始时间是 13 号。

start_hour = 13
interval = 2  # after two hours.

by_hours = tuple(hour for hour in range(start_hour +
interval, 24, interval))

rule = recurrence.Rule(freq=4,  # 4 use for Hourly freq. in recurrence.
 until=end_date, byhour=by_hours)

pattern = recurrence.Recurrence(dtstart=start_date,
 rrules=(rule,),
 dtend=end_date)


for event in pattern.occurrences():
    print(event)  # only 1 event prints, need 4 events as per requirement.

【问题讨论】:

    标签: python python-3.x python-2.7 recurrence recurring-events


    【解决方案1】:

    代码中的罪魁祸首是时间,您的 start_date 和 end_date 具有相同的时间,即 hours=0,minutes=0。这导致问题发生。下面的代码可以根据您的需要正常工作。请根据开始时间创建 start_date,并在 end_date 中定义一天的最后一小时。

    from datetime import datetime, time, timedelta
    start_date = datetime.now().date()
    end_date = start_date
    
    start_date = datetime.combine(start_date, time())
    start_date = start_date + timedelta(hours=13)
    end_date = datetime.combine(end_date, time())
    end_date = end_date + timedelta(hours=23, minutes=59)
    
    rule = recurrence.Rule(freq=HOURLY, until=end_date, interval=2, dtstart=start_date)
    pattern = recurrence.Recurrence(dtstart=start_date,
    rrules=(rule,), dtend=end_date)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 2014-06-01
      • 2018-12-10
      相关资源
      最近更新 更多