Выражение Cron каждые пять минут в следующие n часов?

Я знаю каждые пять минут:

0 0/5 * * * *

Но как ограничить число часов для этого?

Пример: каждые пять минут в течение следующих 10 часов.

Ответ 1

Я думаю, должен быть в состоянии определить триггер, который может повторяться каждый час до определенного времени:

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

Используйте оператор диапазона, чтобы указать часы. Например, для запуска задания каждые пять минут в течение 10 часов, начиная с 2 часов утра:

0 0/5 2-12 * * *

Вот отличный учебник по выражениям Cron и операторам: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html

Изменить: 10/3/2016: Обновлена ​​ссылка.

Ответ 3

Если вы можете программно получить доступ к CronTrigger, на котором выполняется ваше выражение cron, вы можете вызывать методы setStartTime и setEndTime с вычисленным временным диапазоном.

В качестве альтернативы вы можете построить выражение cron на лету и указать вычисленный диапазон часов.

Например, если вы запускаете свой сервер в 9 утра, вы можете создать это выражение во время выполнения 0 0/5 9-19 * * *