我正在使用 Quartz 库进行调度。我必须从给定时间开始每 5 小时(可能会变化)安排一项工作。
我尝试使用以下表达式 -
0 0 12/5 1/1 * ? *
我检查了 future 运行的输出 Cronmaker 。
安排开始时间 -> 2017 年 6 月 21 日星期二上午 10:30
future 运行 -
- 2017 年 6 月 21 日星期三中午 12:00
- 2017 年 6 月 21 日星期三下午 5:00
- 2017 年 6 月 21 日星期三晚上 10:00
- 2017 年 6 月 22 日星期四中午 12:00
该表达式执行了所要求的操作,但我希望除了第 3 次运行之外,第 4 次运行还有 5 个小时,即类似的内容 -
- 2017 年 6 月 21 日星期三中午 12:00
- 2017 年 6 月 21 日星期三下午 5:00
- 2017 年 6 月 21 日星期三晚上 10:00
- 2017 年 6 月 22 日星期四凌晨 3:00
第四次运行将在第二天中午 12:00 触发。我希望将其添加到上次运行的时间中。 有什么方法可以通过 cron 表达式来实现这一点吗?
最佳答案
CronSchedule
并不是最适合您想要执行的操作。
改用SimpleSchedule
:
trigger = newTrigger()
.withIdentity("yourJobName", "yourJobGroup")
.withSchedule(simpleSchedule()
.withIntervalInHours(5) // every 5 hours
.repeatForever()) // keep going in intervals of 5h
.startAt(dateOf(12, 0, 0)) // start at 12:00 PM
.build();
您可以在 official documentation 中找到更多示例.
关于java - Quartz Cron 表达式用于从给定时间开始每 5 小时运行一次作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44620400/