有没有Java类可以从cron表达式中获取日期

16

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

5个回答

23

您还可以利用Spring的CronSequenceGenerator来实现此功能。

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

2
非常好的答案!简洁明了,文档也很全面。如果使用Spring,完全不需要添加其他第三方包。谢谢。 - KWILLIAMS
1
这是用于默认时区的。使用 new CronSequenceGenerator(cronExpression, your_timezone); 来指定特定的时区。 - Ram

21

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);

8
这里有一个与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库,用于解析、验证、迁移cron表达式,并为其提供可读的描述。该项目遵循语义化版本控制约定,并使用Apache 2.0许可证。

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接