Cron表达式到日期/时间点列表

时间:2015-03-28 14:17:11

标签: java date epoch cronexpression

我想知道什么是最有效的方法/最佳库来解析cron表达式并返回Java中的时间点列表。

例如,我会有一个cron表达式,比如Fire every minute in October 2010,并且会返回一个与触发器触发时间相对应的时间序列(或其他一些日期格式)的列表/数组。

由于

2 个答案:

答案 0 :(得分:2)

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

你必须决定你的迭代的起点是什么,它是当前的时刻或时代还是其他的。

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

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

答案 1 :(得分:2)

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被描述为

  

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