Я не понимаю getNextIncludedTime() в Quartz
-
16-09-2019 - |
Вопрос
Наверное, я просто веду себя по-идиотски - это был долгий день!Я кое-что неправильно понял во время моей первой вылазки в Quartz...
Учитывая этот код:
DateTime dt = new DateTime();
dt = dt.withDayOfMonth(20);
Calendar cal = new CronCalendar("0 0/10 * * * ?" );
long start = dt.getMillis();
System.out.println("Starting at " + start);
long end = start + 10;
long current = start;
int i = 0;
while (current < end) {
if (i > 0) {
System.out.println(i + ":" + current);
}
long next = cal.getNextIncludedTime(current);
current = next;
i++;
}
Я ожидаю, что в выходных данных будет не более одного включенного времени, поскольку временное окно составляет 10 мс, а время, включенное в календарь, отличается друг от друга на 10 минут.
Но когда я запускаю его:
Starting at 1250796103004
1:1250796103005
2:1250796103006
3:1250796103007
4:1250796103008
5:1250796103009
6:1250796103010
7:1250796103011
8:1250796103012
9:1250796103013
Пожалуйста, помогите!
Решение
Да, просто я веду себя как тупица.
В календарях указывается ИСКЛЮЧЕННОЕ время.
Мне следовало использовать CronTrigger для указания времени, которое я хотел включить.Код должен выглядеть примерно так...
CronTrigger cal = new CronTrigger("Test", "Test", "0 0/10 * * * ?" );
...
end = start + 1000000;
...
while (current < end) {
if (i > 0) {
System.out.println(i + ":" + current);
}
Date next = cal.getFireTimeAfter(new Date(current));
current = next.getTime();
i++;
}
Что дает результат, которого я ожидал.
Starting at 1250798091337
1:1250798400000
2:1250799000000
Не связан с StackOverflow