2016-04-25 53 views
0

我想通過排除特定時間範圍的Quartz調度程序進行調度。排除特定時間範圍的石英調度程序

例如:上午02時 - 凌晨3點和下午5:30 - 下午5:45

是否有任何其他的方式來實現這一目標而無需使用cron表達式和cron調度?

+0

爲什麼您不想使用cron調度程序? 另外,我不是100%清楚你想要做什麼,你可以換個例子嗎? – dquijada

+0

@dquijada我對cron表達式不太好,想知道,石英調度程序api中是否還有其他庫可以完成這項工作? 最後,cron表達式將被解析,並將解析值設置爲對象的變量。 所以,假設應該有一些setter方法來做相同的! –

回答

1

這是石英日曆的用途。因爲在你的情況下,你想排除特定的白天範圍,你會想要使用DailyCalendar

一個DailyCalendar可以排除一天的時間範圍。由於您想要排除多個(兩個)範圍,因此您需要合併兩個DailyCalendars,例如:

// calendar that excludes the 2am-3am day time range 
DailyCalendar dc1 = new DailyCalendar(2,0,0,0,3,0,0,0); 

// calendar that excludes the 5:30pm-5:45pm day time range 
DailyCalendar dc2 = new DailyCalendar(17,30,0,0,17,45,0,0); 

// combine the two calendars so that both ranges are excluded by dc2 
dc2.setBaseCalendar(dc1); 

// register the calendar with the scheduler 
scheduler.addCalendar("MyExcludedDayTimeRangesCalendar", dc2, true, true); 

MutableTrigger trigger = ... create SimpleTrigger/CronTrigger/DailyTimeInterval/CalendarIntervalTrigger instance 

// associate the created trigger with the registered calendar - the trigger will exclude calendar's time ranges 
trigger.setCalendarName("MyExcludedDayTimeRangesCalendar"); 

...