Выражение Quartz CronTrigger между двумя датами

Есть ли способ написать выражение Quartz CronTrigger, которое выполняется каждый день между двумя датами, например, начинается в 11:00 5 сентября 2011 г. и заканчивается в 11:00 10 июня 2012 г.?


person Michel Hanna    schedule 05.09.2011    source источник
comment
stackoverflow.com/questions/704927/   -  person Martin Gamulin    schedule 05.09.2011


Ответы (3)


Используйте выражение, которое означает каждый день в 11:00, например. «0 0 11 * * ?».

Затем установите startTime триггера на 5 сентября 2011 г., 10:59, и установите endTime триггера на 10 июня 2012 г., 11:01.

person jhouse    schedule 05.09.2011

Другое найденное мной решение — указать политику маршрутизации (SimpleScheduledRoutePolicy) для запланированного маршрута и установить RouteStartDate и setRouteStopDate для этого объекта политики.

person Michel Hanna    schedule 12.09.2011

Одно выражение cron не облегчает запуск разных расписаний для одного и того же типа периода, независимо от того, о каком периоде идет речь, ваш другой график — это годовой период. Однако, за исключением разницы в годах, все остальные периоды имеют одинаковый график. Итак... используя эти выражения cron:

cron1 = "0 0 23 5/1 СЕНТ-ДЕКАБРЬ? 2012"
cron2 = "0 0 23 1/1 ЯНВАРЬ-ИЮНЬ? 2013 "

вы можете переключить планировщик с использования cron1 на cron2 где-то после 23:00.00 31.12.2012, но до 22:59.99 01.01.2013, хотя я бы не стал сокращать это так близко, как показано здесь. Если ваш планировщик считывает свое cron-выражение из базы данных или конфигурации где-то, то просто читайте его в новом расписании каждый день в 23:30. Если вы храните свои выражения cron в базе данных, вы можете запланировать, чтобы планировщик заменял выражение cron для вашей конкретной задачи, используя этот chron3 ниже:

cron3 = "0 0 0 1 JAN ? 2013"

Глупый я :о) сегодня 13 марта 2013 года, поэтому я уверен, что этот ответ немного запоздал для вас!

person user2175986    schedule 16.03.2013