石英调度程序的调度时间不正确



我有一个 Spring 启动应用程序,我在其中尝试使用石英调度程序调度作业,以每天在一天中的特定时间运行。以下是我构建触发器的代码。

DailyTimeIntervalScheduleBuilder scheduleBuilder = DailyTimeIntervalScheduleBuilder
.dailyTimeIntervalSchedule()
.startingDailyAt(TimeOfDay.hourAndMinuteFromDate(activeStartTime))
.endingDailyAfterCount(1)
.withMisfireHandlingInstructionFireAndProceed();
MutableTrigger trigger = scheduleBuilder.build();

我面临的问题是工作已安排,但从第二天开始。例如,如果我将作业安排在 5 月 22 日 16:45,则作业的首次触发时间设置为5 月 23 日 16:45

我尝试使用带有withIntervalInHours(24)而不是endingDailyAfterCount(1)的构建器,但结果是一样的。

我不确定似乎是什么问题。

注意:无论我何时安排作业,此行为都是相同的,即,无论我在 1645 之前还是之后执行此代码都无关紧要,作业始终安排在第二天

我正在使用弹簧启动版本1.5.10和弹簧启动启动器石英版本2.2.5.发布

你能试试下面的代码吗

CalendarIntervalScheduleBuilder schedule = CalendarIntervalScheduleBuilder
.calendarIntervalSchedule()
.inTimeZone(TimeZone.getDefault())
.withIntervalInDays((int) 1)
.withMisfireHandlingInstructionFireAndProceed();
Trigger trigger = TriggerBuilder
.newTrigger()
.startAt(startDateTime)
.withSchedule(schedule).build();

对于字段startDateTime请使用当前日期时间。 如果要从May 22 16:45开始,请相应地创建Date对象。

并设置timezone,否则它将选择默认系统的时区。

最新更新