Quartz CronTrigger - Получение следующего времени стрельбы

I ' m с помощью Quartz CronTrigger для анализа строк формата расписания cron, чтобы определить, когда должно выполняться конкретное задание. На самом деле я не использую Quartz для планирования задания.

В CronTrigger есть метод getFireTimeAfter (Date), который дает в следующий раз, когда задание будет запущено после указанной даты. Это хорошо работает, когда указанная дата наступает сейчас или в будущем. Но он не видит м на работу, если дата в прошлом.

Date currTime = new Date();
CronTrigger tr = new CronTrigger();
tr.setCronExpression("0 0 23 3,18 * ? *");
Date nextFireAt = tr.getFireTimeAfter(currTime);
System.out.println("Reference time: " + currTime);
System.out.println("Next fire after reference time: " + nextFireAt);

Это расписание cron, которое запускается в 23:00 3 и 18 числа каждого месяца. Так, например, если я сделал это сегодня (11 августа), я вижу:

Reference time: Thu Aug 11 10:04:25 MDT 2011
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011

Но если я установлю контрольную дату в прошлое, это даст мне такое же время следующего возгорания.

Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011

Я ожидал, что результат будет следующим:

Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Wed Aug 3 23:00:00 MDT 2011

Этот метод просто не предназначен для такой работы или я делаю что-то не так?

Спасибо!

21
задан erickson 12 August 2011 в 19:16
поделиться