4

Java で cron 式ライブラリを探しています。cron 式を解析して、トリガーの将来の起動時間を返すことができるもの。

の行の API。

    CronExpression cronExpression = new CronExpression("0 30 4 * * *");
    List<Date> fireTimes = cronExpression.getFireTimes(todaysDate, nextWeekDate);

クォーツのような複雑なものは使いたくない。目的は、基本的にタイミングの正規表現のような cron を使用することです。それで全部です。バックグラウンド スケジューラは必要ありません。

グーグルを試しましたが、あまり役立つものを見つけることができませんでした。任意の提案をいただければ幸いです。

よろしく、 パルキット

PS - クオーツから CronExpression クラスを使用することを検討しました。あまり役に立ちませんでした - いくつかのテストに失敗しました。

4

4 に答える 4

2

cron -utilsが役に立つかもしれません。スケジューラではありません。cron 定義を処理し、DateTime を指定して最後/次の実行を返すメソッドを提供します。

ドキュメントのスニペットを次に示します。

CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(QUARTZ);
CronParser parser = new CronParser(cronDefinition);

//Get date for last execution
DateTime now = DateTime.now();
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("* * * * * * *"));
DateTime lastExecution = executionTime.lastExecution(now));

//Get date for next execution
DateTime nextExecution = executionTime.nextExecution(now));

//Time from last execution
Duration timeFromLastExecution = executionTime.timeFromLastExecution(now);

//Time to next execution
Duration timeToNextExecution = executionTime.timeToNextExecution(now);
于 2015-10-20T20:46:54.647 に答える
0

これが他の人にも役立つ場合に備えて、他のオプションを試しましたが、満足できず、その目的のためだけに独自の非常に小さなライブラリcronyを作成することになりました。maven-central で入手できます。

あなたが望んでいたコードは、cronyで次のようになります:

Cron cronExpression = Cron.parseCronString("0 30 4 * * *").get();
Stream<ZonedDateTime> fireTimes = CronExecution
    .getNextExecutionDates(cron, todaysDate)
    .takeUntil(d -> d.isAfter(nextWeekDate));
于 2016-04-13T06:50:48.400 に答える