我有一个应用程序需要每 n 周(n 由用户给定)、超过一天(例如:每个星期一和星期二,每 2 周)触发一次 quartz 事件。这是我写的代码:
newTrigger()
.withSchedule(DailyTimeIntervalScheduleBuilder.dailyTimeIntervalSchedule().onDaysOfTheWeek(daysOfWeek.toArray(new Integer[0]))
.withIntervalInHours(n*7*24))
.startAt(startingDate)
.build();
daysOfWeek 是一个链表,其中包含用户选择的日期(在我们的示例中为星期一和星期二)。
然而,这个东西不起作用,但它只需要第一个选定的日期(星期一)并且在插入几次之后......它甚至会跳到星期日。这是输出信息:
下一个日期 2014 年 4 月 7 日星期一 00:00:00 CEST
下一个日期 2014 年 4 月 21 日星期一 00:00:00 CEST
下一个日期 2014 年 5 月 5 日星期一 00:00:00 CEST
下一个日期 2014 年 5 月 19 日星期一 00:00:00 CEST
下一个日期 2014 年 6 月 2 日星期一 00:00:00 CEST
下一个日期 2014 年 6 月 16 日星期一 00:00:00 CEST
下一个日期 2014 年 6 月 30 日星期一 00:00:00 CEST
下一个日期 2014 年 7 月 14 日星期一 00:00:00 CEST
下一个日期 2014 年 7 月 28 日星期一 00:00:00 CEST
下一个日期 2014 年 8 月 11 日星期一 00:00:00 CEST
下一个日期 2014 年 8 月 25 日星期一 00:00:00 CEST
下一个日期 2014 年 9 月 8 日星期一 00:00:00 CEST
下一个日期 2014 年 9 月 22 日星期一 00:00:00 CEST
下一个日期 2014 年 10 月 6 日星期一 00:00:00 CEST
下一个日期 2014 年 10 月 20 日星期一 00:00:00 CEST
下一个日期 2014 年 11 月 2 日星期日 00:00:00 CET
下一个日期 2014 年 11 月 16 日星期日 00:00:00 CET
下一个日期 2014 年 11 月 30 日星期日 00:00:00 CET
下一个日期 2014 年 12 月 14 日星期日 00:00:00 CET
下一个日期 2014 年 12 月 28 日星期日 00:00:00 CET
请帮助我理解为什么这不起作用。
最佳答案
在单个 CronTrigger 中编码此模式似乎行不通。但是,作业总是可以重新安排自己在以后的时间执行。因此,如果添加一个方法来计算下一次作业运行,则当前执行将安排下一次执行。
例如,如果日期列表是星期一,那么下一次执行将是星期二。然而在星期二,下一次处决将在两周后的星期一进行。
关于java - 每 n 周 Quartz 事件,在不同的几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22668270/