是否有任何java类从cron表达式获取日期

Uni*_*orn 10 java cron date cronexpression

我需要找出由给定的cron表达式表示的第一次出现的日期和时间.是否有任何java类,实用程序代码可以帮助从给定的cron表达式获取数据对象?

sau*_*ata 16

您可以检查org.quartz.CronExpression 它有一个名为getNextValidTimeAfter的方法,您可以使用它.


lor*_*tol 14

您还可以利用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());
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案!简单,简短,可启动文档。如果使用Spring,则是完美的,因为不需要添加其他第三方程序包。谢谢。 (2认同)

小智 8

如果你使用的是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);
Run Code Online (Sandbox Code Playgroud)


Joã*_*ves 7

这是一个类似于Quartz的CronExpression的替代方案,但无需在项目中添加完全成熟的调度程序: 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));
Run Code Online (Sandbox Code Playgroud)

根据官方描述,cron-utils是:

一个Java库,用于解析,验证,迁移crons以及获取人类可读的描述.该项目遵循语义版本控制约定并使用Apache 2.0许可证.