在接下来的n小时内,每五分钟一次表达Cron?

时间:2013-09-25 20:20:22

标签: cron quartz-scheduler

我知道每五分钟就是:

0 0/5 * * * *

但是,如何限制发生这种情况的小时数?

示例:接下来的10个小时每隔五分钟。

3 个答案:

答案 0 :(得分:12)

使用范围运算符指定小时数。例如,从凌晨2点开始每隔5分钟运行一次工作10小时:

0 0/5 2-12 * * *

这是关于Cron表达式和运算符的优秀教程: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html

编辑:2016年10月3日:更新了链接。

答案 1 :(得分:6)

我认为应该能够定义一个触发器,它可以每小时重复一次,直到某个时间:

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);

答案 2 :(得分:2)

如果您可以以编程方式访问运行cron表达式的CronTrigger,则可以使用计算出的时间范围调用方法setStartTimesetEndTime

或者,您可以动态构造cron表达式并指定计算的小时范围。

例如,如果您在上午9点启动服务器,则可以在运行时创建此表达式0 0/5 9-19 * * *