【发布时间】:2014-10-01 14:31:06
【问题描述】:
我遇到了 Quartz 调度程序的问题。我试图在他们的论坛中询问 terracota,但我没有得到答案......
我使用 Java Quartz 和 DailyTimeIntervalScheduleBuilder 如下
DailyTimeIntervalScheduleBuilder dti = dailyTimeIntervalSchedule()
.startingDailyAt(new TimeOfDay(0, 30))
.endingDailyAt(new TimeOfDay(7, 0))
.onEveryDay()
.withIntervalInHours(2)
.withMisfireHandlingInstructionFireAndProceed();
如您所见,我希望触发器在每天 00:30 到 07:00 之间每两个小时触发一次。
在“正常”日子里,触发器会这样触发:
Sat Mar 01 00:30:00 CET 2014
Sat Mar 01 02:30:00 CET 2014
Sat Mar 01 04:30:00 CET 2014
但是使用夏令时:
Sun Mar 30 00:30:00 CEST 2014
Sun Mar 30 03:30:00 CEST 2014
Sun Mar 30 05:30:00 CEST 2014
我明白为什么第二次触发的时间戳计算发生在 03:30 而不是 02:30,但为什么触发器不会在 04:30 '重新调整'下一次触发? 其实我猜是因为
...春天的时钟从 01:59 的最后一刻开始向前跳跃 标准时间到 03:00 DST,那一天有 23 小时,而在 秋天,时钟从 DST 01:59 的最后一刻向后跳到 01:00 标准时间,重复那个小时,那一天有 25 小时。[37]本地时间的数字显示不准确地显示 02:00 在转向夏季时,而是从 01:59:59.9 向前跳跃 到 03:00:00.0。
维基百科
如何强制触发器“重新调整”?
PS:我希望它在今天 00:30, 03:00, 04:30, ... 发射
【问题讨论】:
标签: java quartz-scheduler dst