Я разрабатываю планировщик и использую библиотеку кварца. Я хочу проверить, относится ли время выражения cron к времени в будущем, иначе триггер вообще не будет выполняться. Есть ли способ сравнить время выражения cron с текущим временем в java.
сравнить выражение Cron с текущим временем
Ответы (1)
Следует учитывать, что стандартное допустимое выражение cron всегда будет ссылаться на допустимое время в будущем. Одно предостережение заключается в том, что выражения Quartz cron могут включать необязательное поле года, которое может быть как в прошлом, так и в будущем.
Чтобы проверить правильность выражения, вы можете создать экземпляр CronExpression
, а затем запросить его для следующего допустимого будущего времени; null
указывает, что для выражения нет допустимого будущего времени. Вот пример быстрого модульного теста:
@Test
public void expressionTest() {
Date date;
CronExpression exp;
// Run every 10 minutes and 30 seconds in the year 2002
String a = "30 */10 * * * ? 2002";
// Run every 10 minutes and 30 seconds of any year
String b = "30 */10 * * * ? *";
try {
exp = new CronExpression(a);
date = exp.getNextValidTimeAfter(new Date());
System.out.println(date); // null
exp = new CronExpression(b);
date = exp.getNextValidTimeAfter(new Date());
System.out.println(date); // Tue Nov 04 19:20:30 PST 2014
} catch (ParseException e) {
e.printStackTrace();
}
}
Вот ссылка на Quartz CronExpression
API.
person
sherb
schedule
05.11.2014