简体   繁体   English

Python 创建重复事件

[英]Python Creating Recurrence Events

Im unable to create recurrence python events after every user defined hour in a day.在一天中每个用户定义的小时后,我无法创建重复的 python 事件。 Recurrence only returns me 1 event not after every defined hour. Recurrence 仅在每个定义的小时后返回我 1 个事件。

eg If I want to create a job of cleaning after every 2 hour in system.例如,如果我想在系统中每 2 小时创建一次清洁工作。 so if current hour is 13, events should create for these hours 15, 17, 19, 21, 23. but my code create only 1 job for a day.因此,如果当前时间为 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())

let suppose start hour would be 13th.假设开始时间是 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.

The prime culprit in your code was time, your start_date and end_date has the same time which was hours=0, minutes=0.您的代码中的罪魁祸首是时间,您的 start_date 和 end_date 具有相同的时间,即小时 = 0,分钟 = 0。 That was causing the problem to generate occurrence.这导致问题发生。 The below code is working fine according to your need.下面的代码可以根据您的需要正常工作。 Please created start_date according to starting hours and in end_date define the last hour of the day.请根据开始时间创建 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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM