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

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

您可以查看org.quartz.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); 

这是一个类似于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)); 

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

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

看起来您可以使用以下任何一种:

  • J-时钟守护表达
  • Quartz CronTrigger类

您还可以利用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());