2013-12-16 73 views
0

我有一個使用Quartz.NET運行的cron作業。Cron表達式不能在特定日期運行

<cron-expression>0 5 * * * ?</cron-expression> 

它運行每5分鐘,你可以在上面看到的,但我希望它不會從下午5點30/DEC/2013到01 /月/ 2014早上7點..

運行這是可能的有人知道嗎? 謝謝 尼爾

回答

1

日曆最容易排除。使用日曆,您可以排除一組日期,工作日,時間或日程表中的cron表達式。在確定着火時間後,檢查日曆始終檢查(是否可以運行?)。

你可以鏈接多個日曆,因爲你有令人討厭的複雜性,通過一年,多天和時間範圍的頂部。更可讀和易於理解的解決方案可以是實現您自己的固定時間範圍日曆(實施ICalendar),該過程需要結束和開始時間並將其排除在外。

您自然也可以在2013-12-30 17:00結束您的第一個cron觸發器,並添加一個從2014-01-01 07:00開始的新觸發器。

下面是利用CronCalendar一個簡單的例子:

var calendar = new CronCalendar("0 * 1 * * ?"); 
scheduler.AddCalendar("myCalendar", calendar, replace: false, updateTriggers: false); 

var trigger = TriggerBuilder.Create() 
    .WithCronSchedule("0 5 * * * ?") 
    .ModifiedByCalendar("myCalendar") 
    .Build(); 

scheduler.ScheduleJob(trigger); 
+0

感謝馬爾科!這給了我至少一些選擇!我喜歡實現ICalender的想法..當我編寫實現時,我如何將它與特定的觸發器相關聯? –

+0

我已經更新了示例,希望它有幫助。謝謝 –

+0

非常感謝您的幫助! –