用Croniter分析Quartz-cron表达



此代码:

starting_point = datetime.datetime.now() - datetime.timedelta(hours=1)
cron = croniter.croniter('44 5 19 ? * WED,THU,FRI *', starting_point)
cron.get_next(datetime.datetime)

结果:

croniter.croniter.CroniterBadCronError:必须为迭代器表达式指定5或6列。

但是在使用https://www.freeformatter.com/cron-expression-generator-quartz.html,在中产生相同的表达

每周三、周四和周五下午19:05:44,每月

如何使用croniter解析此cron表达式?

您所指的网站使用支持字段的Quartz Scheduler

Seconds, Minutes, Hours, Day Of Month, Month, Day Of Week, Year

但对于croniter,Seconds字段是可选的,显然是在最后一个位置预期的(我没有发现这一点得到特别好的证明,并通过实验得出结论(:

Minutes, Hours, Day Of Month, Day Of Week, Seconds

此外,它似乎不支持?通配符。

因此,一个等价的表达式似乎是

5 19 * * WED,THU,FRI 44

演示:

>>> import croniter
>>> import datetime
>>> c = croniter.croniter('5 19 * * WED,THU,FRI 44')
>>> print(datetime.datetime.utcfromtimestamp(next(c)))
2021-04-23 19:05:44
>>> print(datetime.datetime.utcfromtimestamp(next(c)))
2021-04-28 19:05:44
>>> print(datetime.datetime.utcfromtimestamp(next(c)))
2021-04-29 19:05:44

最新更新