石英:每天,仅从9:00到12:00

时间:2014-05-04 10:21:28

标签: java quartz-scheduler

阅读quartz 2.1文档并不能完全回答我的问题: - 如何设置触发器,每天仅在09:00到12:00之间每20分钟连续启动一次作业?

可能结合了startAt和endAt?

trigger = newTrigger()
    .withIdentity("trigger3", "group1")
    .startAt(tomorrowAt(15, 0, 0)  // first fire time 15:00:00 tomorrow
    .withSchedule(simpleSchedule()
            .withIntervalInHours(24) // interval is actually set at 24 hours' worth of milliseconds
            .repeatForever())
    .build()

http://quartz-scheduler.org/documentation/quartz-2.1.x/cookbook/DailyTrigger

1 个答案:

答案 0 :(得分:2)

您可以使用Cron表达式。这里的教程:http://quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-06

  

CronTrigger示例2 - 用于创建触发的触发器的表达式   每隔5分钟,在分钟后10秒(即上午10:00:10,   上午10:05:10等。)

     

" 10 0/5 * * *?"

还有一些网站帮助创建Cron表达式http://www.abunchofutils.com/utils/developer/cron-expression-helper/

表达式*/20 9-11 * * *在9到12之间每20分钟触发一次,但它不会在12:00触发。


或者您可以使用DailyTimeIntervalScheduleBuilder

Trigger trigger = DailyTimeIntervalScheduleBuilder.dailyTimeIntervalSchedule()
        .onEveryDay()
        .startingDailyAt(TimeOfDay.hourAndMinuteOfDay(9, 0))
        .endingDailyAt(TimeOfDay.hourAndMinuteOfDay(12, 0))
        .withIntervalInMinutes(20)
        .build();