Есть ли путь в Java для нахождения "Прошлого Запущенного Времени" от Выражения Крона.
Например, Если теперь = 25 апреля 2010 22:00, выражение крона "0 15 10? * *" (кварц) должен возвратить меня 25 апреля 2010 10:15
Примечание: 1) я не забочусь, используем ли мы стандартные выражения крона (как Unix и Кварц) или менее популярные, если они могут выбрать меня корректное "Прошлое Запущенное Время", 2) Также это не буквально "Прошлый раз Огня", поскольку триггер не мог стрелять, но логически должен быть способ сказать, когда это (имел бы), запущенный в последний раз.
Во-первых, мне неизвестна существующая библиотека, которая поддерживает это. Quartz может, но стандартные библиотеки классов Java, конечно же, этого не делают.
Во-вторых, строго говоря, то, о чем вы просите изначально, невозможно. Лучшее, что может сказать вам библиотека, - это то, что выражение cron должно было запускаться или должно было запускаться . Единственное, что может (теоретически) сказать вам, когда в последний раз действительно сработало выражение cron, - это сам экземпляр планировщика.
Похоже, что в Quartz есть некоторая библиотека для поддержки выражений cron.
См. Javadoc для класса CronExpression , который имеет метод под названием getTimeBefore
. То есть,
CronExpression cron = new CronExpression("0 15 10 ? * *");
Date today = new Date();
Date previousExecution = cron.getTimeBefore(today);
Это может зависеть от версии Quartz, работает ли это.
Если посмотреть на последний исходный код (версия 2.1.0 на момент написания), этот метод не был реализован и всегда возвращает значение null.