сравнить выражение Cron с текущим временем

Я разрабатываю планировщик и использую библиотеку кварца. Я хочу проверить, относится ли время выражения cron к времени в будущем, иначе триггер вообще не будет выполняться. Есть ли способ сравнить время выражения cron с текущим временем в java.


person vaibhav.g    schedule 29.10.2014    source источник


Ответы (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