Выражение Cron на один день происходит каждый час

Мне нужно выражение cron, которое позволяет мне запускать планировщик по следующим правилам:

Starts 12:00 am on Friday (pacific time) 
ends 12:00 am on Saturday (pacific time)
And between these two dates it must occurs every hour

Я могу написать что-то вроде "0 0 12/1 ? * FRI-SAT", но, конечно, это неправильно. Как установить простой диапазон от 12-00 ПТ до 12-00 СБ?


person Neir0    schedule 19.06.2013    source источник
comment
? символ может быть заменен на 00, ПТ-СБ уже является периодом времени. Но я не знаю, что вы имеете в виду, 12/1 вы что запускаете команду каждый час?   -  person Edorka    schedule 19.06.2013
comment
@Edorka 12/1 означает 12:00, 13:00, 14:00... и т.д. Мы увеличиваем начальные часы на один час.   -  person Neir0    schedule 19.06.2013
comment
хорошо, но я думаю, что поля порядка: минуты, часы, день месяца, месяц, день недели   -  person Edorka    schedule 19.06.2013


Ответы (3)


Попробуйте это выражение

0 0 12-23,00-12 ? * FRI,SAT

и вы можете проверить следующее запланированное время здесь, на http://www.cronmaker.com/, введя это выражение .

person roger_that    schedule 18.07.2013

Я предполагаю, что вам, вероятно, потребуется настроить два триггера: один, который начинается в 12:00 пятницы и заканчивается в полночь и срабатывает каждый час, и один для субботы, начиная с 00:00 и заканчивающийся в 12:00. Итак, что-то вроде этого

0 0 12-23 ? * FRI
0 0 0-12 ? * SAT

Учебное пособие по триггерам Cron
Изменить
Также обратите внимание на Cron Maker, так как он сгенерирует для вас выражение cron. а также показать, когда он сработает.

person Nathan Fisher    schedule 19.06.2013
comment
Спасибо. Реально ли объединить эти выражения в одно выражение? - person Neir0; 19.06.2013
comment
Я полагаю, вы могли бы попробовать 0 0 12-23,00-12 ? * FRI, SAT, но я понятия не имею, сработает ли это или сработает ли оно в ожидаемое время. - person Nathan Fisher; 19.06.2013

Если выражение cron трудно различить, вы всегда можете создать свой собственный триггер.

Я думаю, что что-то вроде этого может помочь:

    var jobDetail;

    var days = new DayOfWeek[] {DayOfWeek.Friday, DayOfWeek.Saturday};

    var trigger = TriggerBuilder.Create()
        .ForJob(jobDetail)
        .WithDailyTimeIntervalSchedule(x => x.WithIntervalInHours(1)
        .OnDaysOfTheWeek(days)
        .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0)));
person Nick Patsaris    schedule 22.06.2013