Есть ли класс java для получения даты из выражения cron

Мне нужно узнать первое вхождение даты и времени, представленное заданным выражением cron. Есть ли класс java, служебный код, который может помочь в получении объекта данных из данного выражения cron ?

5 ответов


вы можете проверить org.кварцевый.CronExpression Он имеет метод с именем getNextValidTimeAfter который вы можете использовать.


Если вы используете Spring, вы можете использовать:

CronTrigger trigger = new CronTrigger(cron);
TriggerContext context = new TriggerContext() {

public Date lastScheduledExecutionTime() {
    return null;
}

public Date lastActualExecutionTime() {
    return null;
}

public Date lastCompletionTime() {
    return null;
}
};
return trigger.nextExecutionTime(context);

вот альтернатива, похожая на CronExpression Quartz, но без необходимости добавлять полноценный планировщик в ваш проект: cron-utils

вы можете получить нужную дату со следующим:

//Get date for next execution
DateTime now = DateTime.now();
CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(QUARTZ);
CronParser parser = new CronParser(cronDefinition);
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("* * * * * * *"));
DateTime nextExecution = executionTime.nextExecution(now));

согласно официальному описанию,cron-utils - это:

библиотека Java для анализа, проверки, миграции Кронов, а также для получения удобочитаемых описаний для них. Проект следует семантическому Соглашение об управлении версиями и использует лицензию Apache 2.0.


похоже, вы можете использовать любой из этих:


вы также можете использовать spring http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html для этого

CronSequenceGenerator generator = new CronSequenceGenerator(cronExpression);
Date nextRunDate= generator.next(new Date());