石英调度器的时间安排不正确

问题描述 投票:2回答:1

我有一个spring boot应用程序,我试图使用石英调度器来安排每天在特定时间运行的作业。以下是我的触发器代码。

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)但结果还是一样。

我不知道似乎是什么问题。

注意:无论我何时安排作业,这种行为都是一样的。 不管我什么时候安排作业,这种行为都是一样的 也就是说,不管我是在16: 45之前还是之后执行这段代码,作业都会被安排在第二天执行

我使用的是spring boot版本 1.5.10 和 spring-boot-starter-quartz 版本。2.2.5.释放

java spring-boot quartz-scheduler
1个回答
1
投票

你可以试试下面的代码

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 也是,否则它将选择默认系统的时区。

© www.soinside.com 2019 - 2024. All rights reserved.