java - 每 n 周 Quartz 事件,在不同的几天

标签 java scheduled-tasks quartz-scheduler

我有一个应用程序需要每 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/

相关文章:

Java:将数组写入文本文件不一致

java - 遍历 n 维数组

java - 为给定的模数和指数生成 RSA key

python - Luigi 在任务之间传递小数据

java - quartz 调度程序 : Maintain processed files list in the event job metadata

java - Quartz 作业的 Cron 作业语法

java - 未捕获异常对 Quartz 的 SimpleThreadPool 线程的影响

javascript - 更好的解决方案或替换window.unload

java - Spring-MVC : Scheduled job did not execute

scheduled-tasks - 计划任务 : Error 0X3 but Log doesn't give any error