java 解析 cron 表达式 cron-utils 使用 方式

cron-utils 基本 使用 方式

方式一
Maven 依赖
<!-- 注意: 这里必须要使用 9.1.6 及以上版本, 之前的版本有严重漏洞 -->
<dependency>
    <groupId>com.cronutils</groupId>
    <artifactId>cron-utils</artifactId>
    <version>9.1.6</version>
</dependency>
使用示例
import com.cronutils.model.definition.CronDefinition;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.model.time.ExecutionTime;
import com.cronutils.parser.CronParser;
import java.time.Duration;
import java.time.ZonedDateTime;
import java.util.Optional;

import static com.cronutils.model.CronType.QUARTZ;

public class CronDemo {
    public static void main(String[] args) {
        CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(QUARTZ);
        CronParser parser = new CronParser(cronDefinition);
        ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("*/45 * * * * ?"));
        Optional<ZonedDateTime> zonedDateTime = executionTime.nextExecution(ZonedDateTime.now());
        System.err.println("下次执行时间: " + zonedDateTime.toString());
        Optional<ZonedDateTime> zonedDateTime1 = executionTime.lastExecution(ZonedDateTime.now());
        System.err.println("最后执行时间: " + zonedDateTime1.toString());
        ZonedDateTime timeForLast = ZonedDateTime.now();
        Optional<Duration> duration = executionTime.timeFromLastExecution(timeForLast);
        System.err.println("最后一次执行时间过去了: " + duration + " 秒");
        Optional<Duration> duration1 = executionTime.timeToNextExecution(ZonedDateTime.now());
        System.err.println("距离下次执行时间: " + duration1);
    }
}
方式二
使用 JDK 自带的解析方式
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中有一些库可以用来解析cron表达式,其中一个常用的库是cron-utils使用cron-utils可以将cron表达式转换为人类可读的字符串,并且支持解析cron表达式的各种特殊字符。 以下是使用cron-utils解析cron表达式的示例代码: ```java import com.cronutils.model.Cron; import com.cronutils.model.definition.CronDefinition; import com.cronutils.model.definition.CronDefinitionBuilder; import com.cronutils.parser.CronParser; public class CronParserExample { public static void main(String[] args) { // 定义cron表达式的格式 CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(CronDefinitionBuilder.instanceDefinitionForQuartzV2()); // 创建CronParser对象 CronParser parser = new CronParser(cronDefinition); try { // 解析cron表达式 Cron cron = parser.parse("0 0 12 * * ?"); // 获取解析后的cron表达式的各个字段值 String minutes = cron.retrieve(CronFieldName.MINUTE).getExpression().asString(); String hours = cron.retrieve(CronFieldName.HOUR).getExpression().asString(); String dayOfMonth = cron.retrieve(CronFieldName.DAY_OF_MONTH).getExpression().asString(); String month = cron.retrieve(CronFieldName.MONTH).getExpression().asString(); String dayOfWeek = cron.retrieve(CronFieldName.DAY_OF_WEEK).getExpression().asString(); String year = cron.retrieve(CronFieldName.YEAR).getExpression().asString(); // 输出解析结果 System.out.println("Minutes: " + minutes); System.out.println("Hours: " + hours); System.out.println("Day of Month: " + dayOfMonth); System.out.println("Month: " + month); System.out.println("Day of Week: " + dayOfWeek); System.out.println("Year: " + year); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码中,我们首先定义了cron表达式的格式,然后创建了一个CronParser对象,并使用该对象解析了一个cron表达式。接着,我们通过Cron对象的retrieve方法获取了解析后的cron表达式的各个字段值,并将其输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值