16

我知道每五分钟是:

0 0/5 * * * *

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

示例:接下来的 10 小时每五分钟一次。

4

3 回答 3

13

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

0 0/5 2-12 * * *

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

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

于 2013-12-16T21:06:58.583 回答
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);
于 2013-09-25T20:35:49.893 回答
2

如果您可以以编程方式访问CronTrigger正在运行您的 cron 表达式的,那么您可以调用这些方法setStartTimesetEndTime使用计算的时间范围。

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

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

于 2013-09-26T14:02:36.097 回答