【发布时间】:2013-10-01 14:36:19
【问题描述】:
我知道每五分钟是:
0 0/5 * * * *
但是我如何限制发生这种情况的小时数?
示例:接下来的 10 小时每五分钟一次。
【问题讨论】:
标签: cron quartz-scheduler
我知道每五分钟是:
0 0/5 * * * *
但是我如何限制发生这种情况的小时数?
示例:接下来的 10 小时每五分钟一次。
【问题讨论】:
标签: cron quartz-scheduler
使用范围运算符指定小时数。例如,从凌晨 2 点开始每 5 分钟运行一次作业,持续 10 小时:
0 0/5 2-12 * * *
这是一个关于 Cron 表达式和运算符的优秀教程: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html
编辑:2016 年 10 月 3 日:更新了链接。
【讨论】:
如果您可以通过编程方式访问正在运行您的 cron 表达式的 CronTrigger,那么您可以使用计算出的时间范围调用方法 setStartTime 和 setEndTime。
或者,您可以动态构建 cron 表达式并指定计算的小时范围。
例如,如果您在上午 9 点启动服务器,则可以在运行时创建此表达式0 0/5 9-19 * * *
【讨论】:
我认为应该能够定义一个可以每小时重复一次的触发器,直到某个时间:
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
...
Trigger myTrigger = newTrigger()
.withIdentity('myUniqueTriggerID")
.forJob(myJob)
.startAt(startDate)
.endAt(endDate)
.withSchedule(simpleSchedule().withIntervalInHours(1));
...
scheduler.scheduleJob(myJob, myTrigger);
【讨论】:
- 特殊字符来定义间隔。看看quartz-scheduler.org/api/2.0.0/org/quartz/CronExpression.html