Cron выражение для временного диапазона - PullRequest
4 голосов
/ 19 июля 2010

Я использую Quartz.Net для планирования своих работ в приложении. Мне просто интересно, можно ли построить CRON-выражение для следующего сценария:

Каждую секунду с 2:15 до 5:20

.

Ответы [ 3 ]

5 голосов
/ 29 июля 2010

Робо,

Большое спасибо за ваш ответ. И я прошу прощения за такую ​​задержку с ответом. Я действительно был на некоторое время. Ваше решение действительно работает. Мне пришлось создать три триггера CRON для указанного мной временного диапазона. Вы были правы с указанными вами временными диапазонами. Тем не менее, для 3 CRON выражений, которые вы упомянули. Боюсь, они могут работать не так, как задумано. Эти выражения работают для временного диапазона: 2:15 утра - 5:20 утра - каждый день

1) * 15-59 2 * * ? - каждую секунду с 2:15 до 3:00, т.е. с 2:15:00 до 2:59:59

2) * 0-59 3-4 * * ? - каждую секунду с 3:00 до 5:00, т. Е. С 3:00:00 до 4:59:59 AM

3) * 0-19 5 * * ? - каждую секунду с 5:00 до 5:20, т. Е. С 5:00:00 до 5:19:59

@ gauteh: Обратите внимание, что Quartz .Net фактически поддерживает второй триггер.

Надеюсь, это поможет другим, кому может понадобиться решение аналогичной проблемы.

4 голосов
/ 20 июля 2010

Что касается поддержки секунд cron, то, похоже, есть некоторая разница в синтаксисе, используемом между UNIX cron tool и CRON Expression статей Википедии. Согласно документации Quartz CRON , секунды поддерживаются.

Учитывая вышеизложенное, я бы создал три триггера CRON для обработки:

  1. 2: 15: 00 - 2: 59: 59
  2. 3: 00: 00 - 4: 59: 59
  3. 5: 00: 00 - 5: 19: 59

Что бы перевести на (я верю):

  1. * 15/1 2 * * ?
  2. * * 3-5 * * ?
  3. * 0-20 5 * * ?
1 голос
/ 01 августа 2010

Здесь у вас есть интервальный триггер (каждую секунду), который четко переводится в SimpleTrigger. С этим вам нужно только ограничение, позволяющее ему работать в определенном временном диапазоне (2:15 - 5:20). Этого можно добиться с помощью календаря, точнее DailyCalendar. Вы можете установить ежедневный календарь на этот временной диапазон и установить для параметра InvertTimeRange значение true, чтобы включить диапазон вместо значения по умолчанию для исключения диапазона.

Подробнее о календарях читайте в учебном пособии и Документация по DailyCalendar API .

...