Настройка часового пояса Quartz для планировщиков с помощью onDaysOfTheWeek - PullRequest
0 голосов
/ 04 августа 2020

Мое требование - создать планировщик Quartz с триггером, который запускается с заданным интервалом минут или часов между временем начала и временем окончания в заданные дни недели. В настоящее время я использую приведенный ниже код для конструктора триггеров, и он отлично работает локально.

public Trigger createDailyTimeIntervalTrigger(String jobName, String jobGroup, Set<Integer> daysOfWeek, LocalTime fromTime, LocalTime toTime, int timeInterval, IntervalUnit timeIntervalUnit) {

    Date nowDate = dateTimeFormat.getNowTimeDate();

    return TriggerBuilder.newTrigger().withIdentity(jobName, jobGroup).startAt(nowDate)
            .withSchedule(dailyTimeIntervalSchedule()
                    .onDaysOfTheWeek(daysOfWeek)
                    .startingDailyAt(TimeOfDay.hourAndMinuteOfDay(fromTime.getHour(), fromTime.getMinute()))
                    .endingDailyAt(TimeOfDay.hourAndMinuteOfDay(toTime.getHour(), toTime.getMinute()))
                    .withInterval(timeInterval, timeIntervalUnit)
            )
            .build();

}

Здесь пользовательские данные представляют собой набор дней в неделе, время начала и время окончания. Однако эти входные данные передаются из другого часового пояса, и я хочу, чтобы TriggerBuilder учитывал этот часовой пояс. По-видимому, используемый здесь dailyTimeIntervalSchedule() не имеет опции .inTimeZone(timeZone), как в dailyAtHourAndMinute(hour, minute).

Я также рассматривал возможность использования выражений cron напрямую, но, как я понимаю, нельзя поддерживать согласованный временной интервал между несколькими часами, когда интервал не равен 60 раз.

...