Есть ли класс 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());