Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 石英事件每n周,在不同的天数_Java_Scheduled Tasks_Quartz Scheduler - Fatal编程技术网

Java 石英事件每n周,在不同的天数

Java 石英事件每n周,在不同的天数,java,scheduled-tasks,quartz-scheduler,Java,Scheduled Tasks,Quartz Scheduler,我有一个应用程序,它需要在超过一天的时间内(例如:每周一和周二,每两周)每n周(用户给出n)触发一次quartz事件。这是我写的代码: newTrigger() .withSchedule(DailyTimeIntervalScheduleBuilder.dailyTimeIntervalSchedule().onDaysOfTheWeek(daysOfWeek.toArray(new Integer[0])) .withIntervalInHours(n*7*24)) .startAt(sta

我有一个应用程序,它需要在超过一天的时间内(例如:每周一和周二,每两周)每n周(用户给出n)触发一次quartz事件。这是我写的代码:

newTrigger()
.withSchedule(DailyTimeIntervalScheduleBuilder.dailyTimeIntervalSchedule().onDaysOfTheWeek(daysOfWeek.toArray(new Integer[0]))
.withIntervalInHours(n*7*24))
.startAt(startingDate)
.build();
daysOfWeek是一个LinkedList,包含用户选择的日期(在我们的示例中是星期一和星期二)

然而,这件事不起作用,但它只需要选定的第一天(星期一)和几次插入后。。。它甚至跳到了星期天。以下是输出信息:


下一个日期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中编码此模式似乎不起作用。但是,作业始终可以重新安排自己在以后执行。因此,如果添加了一个方法来计算下一次作业运行,则当前执行将安排下一次执行


例如,如果日期列表是星期一,那么下一次执行将是星期二。但在周二,下一次执行将在两周后的周一进行。

这是一个问答网站,不是我们为您编写解决方案的地方。也就是说,在你的例子中,日期从周一跳到周日,因为10月26日是夏令时的最后一天,所以有一个小时的差异。在您的代码中,您使用7*24来计算一周中的小时数,但这并不总是正确的。一年中实际上有一天是25小时,一天是23小时(DST开始和结束)。嗯……感谢DST的故事!:)我忘了。但是,你知道为什么只需要第一天就可以了吗?我不确定,我不是石英专家,但问题可能在于
和intervalinhours
。我认为这个时间间隔适用于第一个日期(在您的示例中是4月7日星期一),这会导致quartz直接跳到4月21日星期一。