У меня есть сценарий, в котором мне нужно запланировать задание, которое должно выполняться ежедневно в определенное время. Когда я планирую его с определенным временем в качестве времени запуска для планировщика, кварц не будет запускать задание в установленное время запуска, а будет запускаться в следующем цикле, т.е. после 24-часовой задержки. Даже при проверке nextFireTime мы получаем дневная задержка.
Например: мне нужно запланировать задание ежедневно, чтобы оно выполнялось в 18:00 вечера. И запустите его в 17:00 сегодня (27 марта 2018 г.). Задание не запускается, а nextFireTime — 18:00 28 марта 2018 г.
Фрагмент кода:
Date startDateTime = new Date(scheduler.getStartDateTime());
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(startDateTime);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(scheduleTriggerName, schdeuleGroupName).startAt(startDateTime).withSchedule(dailyAtHourAndMinute(hours, minutes)).build();
JobDetail jobDetail = this.getJobDetail(schdeuleJobName, schdeuleGroupName);
Конфигурация планировщика на весну
SchedulerFactoryBean schedulerFactoryBean= new SchedulerFactoryBean();
QuartzAutowireBeanFactory jobFactory = new QuartzAutowireBeanFactory();
jobFactory.setApplicationContext(applicationContext);
schedulerFactoryBean.setJobFactory(jobFactory);
schedulerFactoryBean.scheduleJob(jobDetail, trigger)// scheduling the job