Is there any java class to get Date from cron expression

后端 未结 5 1495
时光说笑
时光说笑 2021-01-04 05:46

I need to find out the first occurrence of Date and time represented by given cron expression. Is there any java class, utility code which can help in getting data object fr

相关标签:
5条回答
  • 2021-01-04 06:12

    You can check org.quartz.CronExpression It has a method named getNextValidTimeAfter which you can use.

    0 讨论(0)
  • 2021-01-04 06:17

    It looks like you could use either of these:

    • j-cron-expression
    • Quartz CronTrigger class
    0 讨论(0)
  • 2021-01-04 06:18

    If you're using Spring you could use:

    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);
    
    0 讨论(0)
  • 2021-01-04 06:21

    Here's an alternative similar to Quartz's CronExpression but without having to add a fully fledged scheduler to your project: cron-utils

    You can get the date you need with the following:

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

    According to the official description, cron-utils is:

    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.

    0 讨论(0)
  • 2021-01-04 06:33

    You can also leverage on spring's http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html for this

    CronSequenceGenerator generator = new CronSequenceGenerator(cronExpression);
    Date nextRunDate= generator.next(new Date());
    
    0 讨论(0)
提交回复
热议问题