我可以使用Quartz Scheduler庫,設置如下?:我可以使用Quartz Scheduler在第30天每隔一個月發射一次,但如果月份沒有第30天,最後一天發射?
- 從月,30日開始創建計劃2014
- 執行每30天
- 每2個月因此
- 如果月份沒有第30天,則應在月的最後一天發生操作。
因此,所產生的時間表將是:
- 2014年12月30日
- 月,2015年
- 2015年4月30日
- ...等
從我所瞭解到的:
- CronTrigger不允許這樣做(它可以被設置爲僅要在特定的月份,而不是間隔觸發),
CalendarIntervalTrigger將跳過沒有30天做個月(觸發通過下面的代碼創建)
try { SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); scheduler.start(); JobDetail jobDetail = JobBuilder.newJob(HelloJob.class) .withIdentity("HelloJob_CalendarIntervaled", "calendarIntervaled") .build(); Calendar decemberThirty = Calendar.getInstance(); decemberThirty.set(Calendar.YEAR, 2014); decemberThirty.set(Calendar.MONTH, Calendar.DECEMBER); decemberThirty.set(Calendar.DAY_OF_MONTH, 30); CalendarIntervalTrigger calendarIntervalTrigger = newTrigger() .withIdentity("calendarIntervalTrigger", "calendarIntervaled") .withSchedule(CalendarIntervalScheduleBuilder.calendarIntervalSchedule() .withIntervalInMonths(2)) .startAt(decemberThirty.getTime()) .forJob(jobDetail) .build(); scheduler.scheduleJob(jobDetail, calendarIntervalTrigger); System.out.println(calendarIntervalTrigger.getNextFireTime()); } catch (SchedulerException e) { e.printStackTrace(); }
如果沒有,是否有任何替代品(它應該在JBoss EAP 6.2.0工作)?
最遲的實施:每天開啓工作,檢查工作開始時是否有效。我不知道你的情況會有多麼實際(安裝成本等),但它可以讓你使用日期API,將正確的日期邏輯移動到一個方法,記錄和測試它,等等。 – ssube 2014-09-24 14:03:40