我想知道什么是最有效的方法/最佳库来解析cron表达式并返回Java中的时间点列表。
例如,我会有一个cron表达式,比如Fire every minute in October 2010
,并且会返回一个与触发器触发时间相对应的时间序列(或其他一些日期格式)的列表/数组。
由于
答案 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许可证。