python - Python 创建重复事件
问题描述
在一天中每个用户定义的小时后,我无法创建重复的 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.
解决方案
您的代码中的罪魁祸首是时间,您的 start_date 和 end_date 具有相同的时间,即小时 = 0,分钟 = 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)
推荐阅读
- jpeg - 交换 .eps 文件中的图像?
- python - 如果打开另一个终端窗口,则无法终止/终止程序
- sql - 在 T-SQL 存储过程的参数中将 NULL 作为值传递
- es6-promise - 创建被拒绝的 JS 承诺的正确方法是什么?
- python - 如何将python中的字符串转换为数字向量,以便将它们与其他向量进行比较?
- html - 试图将 svg 放在 img 之上
- pyspark - pyspark 在 Cassandra 表中的行上设置 ttl
- java - 仅在双击时增加文本值问题
- python - 为纯 Python 包构建发行版有什么意义?
- react-native - 在本机反应中设置单选按钮初始值