Dates/Timepoints 列表的 Cron 表达式

Cron Expression To List of Dates/Timepoints

我想知道什么是最有效的 way/best 库来解析 cron 表达式和 return Java 中的时间点列表。

例如,我会有一个 cron 表达式,比如说,Fire every minute in October 2010 并且会得到一个 list/array 纪元时间(或其他一些日期格式)returned 对应于触发触发器的次数。

谢谢

您可以使用 org.quartz.CronExpression.getNextValidTimeAfter()。使用此方法,您可以迭代获得任意数量的触发次数。

您必须决定迭代的起点是什么,是当前时刻还是纪元还是其他。

并且您可以使用构造函数 CronExpression(String cronExpression) 将字符串 cron 表达式解析为 org.quartz.CronExpression

编辑: 您可以在 Spring 框架的 CronSequenceGenerator 中找到类似的功能。两者都可以以类似的迭代方式使用,因此您可以检查哪一个最适合您的性能等。

cron-utils 作为 Quartz 的 CronExpression 的替代品可能很有用,因为它提供了 cron 功能而无需向项目添加整个调度程序。 从 README 中,可以使用以下代码片段计算下一次执行:

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

在同一个README中,cron-utils被描述为

A Java library to parse, validate, migrate crons as well as get human readable descriptions for them. The project follows the Semantic Versioning Convention and uses Apache 2.0 license.