Java自定义Cron,解析Cron表达式

Oracle 解析cron定时表达式 Oracle 解析cron表达式1.概述2.步骤2.1 规范cron表达式合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 1.概... 阅读详情

Cron表达式中周和数字是不对应的
周一:2;周二:3;周三:4;周四:5;周五:6;周六:7;周日:1

pom文件必须依赖

		<dependency>
            <groupId>com.cronutils</groupId>
            <artifactId>cron-utils</artifactId>
            <version>9.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.google-collections</groupId>
            <artifactId>google-collect</artifactId>
            <version>snapshot-20080530</version>
        </dependency>

创建CronUtils工具类

package com.example.demo.utils;

import com.cronutils.model.CronType;
import com.cronutils.model.definition.CronDefinition;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.parser.CronParser;
import com.google.common.collect.Lists;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * ClassName : CronUtils
 * Description : Cron表达式工具类
 * Author : x x x
 * Date : 2021/6/3 3:10 下午
 */
@Component
public class CronUtils {
   
   
    private static final Logger LOGGER = LoggerFactory.getLogger(CronUtils.class);

    private static final String QUESTION = "?";

    private static final String ASTERISK = "*";

    private static final String COMMA = ",";

    /**
     * 替换 分钟、小时、日期、星期
     */
    private static final String ORIGINAL_CRON = "0 %s %s %s * %s";

    /**
     * 检查cron表达式的合法性
     */
    public boolean checkValid(String cron) {
   
   
        try {
   
   
            CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(CronType.SPRING);
            CronParser parser = new CronParser(cronDefinition);
            parser.parse(cron);
        } catch (IllegalArgumentException e) {
   
   
            LOGGER.error(String.format("cron=%s not valid", cron));
            return false;
        }
        return true;
    }

    public String buildCron(List<Integer> minutes, List<Integer> hours, List<Integer> weekdays) {
   
   
        String minute;
        if (minutes.equals(this.getInitMinutes())) {
   
   
            minute = ASTERISK;
        } else {
   
   
            minute = StringUtils.join(minutes, COMMA);
        }
        String hour;
        if (hours.equals(this.getInitHours())) {
   
   
            hour = ASTERISK;
        } else {
   
   
            hour = StringUtils.join(hours, COMMA);
        }
        String weekday;
        if (weekdays.equals(this.getInitWeekdays())) {
   
   
            weekday = QUESTION;
        } else {
   
   
            weekday = StringUtils.join(weekdays, COMMA);
        }
        // 重点:星期和日字段冲突,判断周日的前端输入
        if (weekday.equals(QUESTION)) {
   
   
            return String.format(ORIGINAL_CRON, minute, hour, ASTERISK, weekday);
        } else {
   
   
            return String.format(ORIGINAL_CRON, minute, hour, QUESTION, weekday);
        }
    }

    /**
     * 解析cron
     */
    public CustomCronField parseCon(String cron) {
   
   
        if (!this.checkValid(cron)) {
   
   
            return null;
        }
        List<String> result = Arrays.asList(cron.trim().split(" "));
        CustomCronField field = new CustomCronField()
Java构建cron表达式 1、cron表达式详解 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: (1) Seconds Minutes Hours DayofMonth Month DayofWeek Year (2)Seconds Minutes Hours DayofMonth Month DayofWeek 2、cron表达式结构 2.1每隔字符含义 corn从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份 2.. 阅读详情

相关推荐

CronUtils 定时器工具类

Java项目中用的工具类

weixin_53666393的博客 886

Java任务调度库之java-cron-utils入门指南

通过添加依赖,我们就可以开始使用的强大功能了。Cron表达式是一种用于配置定时任务的标准格式,由六个或七个空格分隔的字段组成,每个字段代表不同的时间单位。通过上面的例子,我们学习了如何解析一个Cron表达式。通过上面的例子,我们学会了如何验证一个Cron表达式的有效性。通过上面的例子,我们学习了如何计算Cron表达式的下一个触发时间。通过上面的例子,我们学习了如何使用实现一个简单的Cron任务调度器。通过上面的例子,我们学习了如何使用处理不同的时区。今天我们学习了如何使用。

java专栏 2542

Scala跨平台CRON表达式解析库:cron4s深入解析

CRON表达式是定时任务中使用的字符串,用于描述时间规则。它由六个或七个字段组成,字段之间用空格隔开,每个字段代表时间的一个维度。cron4s 库的类型系统主要由模式(Pattern)和解码器(Decoder)组成。模式定义了 CRON 表达式必须遵守的结构,而解码器则用于将输入的 CRON 字符串解析为相应的模式。cron4s 的类型系统确保了 CRON 表达式在被解析时能够符合既定的模式,如果不符合,编译器将报错。

weixin_33375360的博客 773

cron-utils-scheduler:一个基于cron-utils库的Java作业调度程序。 支持多种cron格式-甚至自定义格式!

cron-utils-scheduler 一个基于cron-utils库的Java作业调度程序。 支持多种cron格式-甚至自定义格式! 优先级等待队列:按日期排序的作业:最新的优先。 等待直到拉到执行队列。 优先级EXECUTING队列:按日期排序的作业:较新的优先。 执行程序池检索它们并尽快执行。 观察者线程:每N ms(其中N ms <1s),检查要执行的下一个作业,并将其分配给EXECUTING队列 执行程序:执行分配的作业。 通知执行结束状态:成功,失败 成功的队列:保存上一次成功执行的作业 FAILED队列:保存最后的FAILED作业 Job:提供执行代码ExecutionInstance:job + status + date 执行状态 考虑: 计划可运行物品的能力 能够计划必须保持无状态(可序列化参数除外)且应通过反射创建的作业的能力(将来支持分布式执行)

PC微信逆向) 读取内存联系人链表

首先从一些网络上搜索到的信息可以得出联系人列表是保存在内存里的,并且是全局变量不会被释放,所以我们可以通过搜索某个联系人的信息来定位

Qwertyuiop2016的博客 2919

Android AudioFlinger实战:如何用FastMixer优化低延迟音频流(附调试技巧)

本文深入解析了Android AudioFlinger的FastMixer线程机制,指导开发者如何利用该技术优化低延迟音频流。通过实战配置AAudio API、调整硬件缓冲区及线程优先级,并结合adb、Systrace等调试技巧,可将音频延迟显著降低至10毫秒以下,适用于音乐制作、游戏音效等实时音频处理场景。

weixin_29230901的博客 335

Google AdSense收款前必做:W-8BEN税务认证的3个关键选择与1个提交时机小技巧

本文深入解析Google AdSense收款前必须完成的W-8BEN税务认证,重点介绍账号类型选择、特殊税率勾选、美国活动界定等3个关键决策,并分享提交时机的小技巧,帮助站长高效通过审核,确保广告收入顺利到账。

weixin_30443731的博客 671

R语言LASSO回归作图为什么X轴使用-log(λ)而不是log(λ),如何转化为log(λ)?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1015

【2025华为OD机考真题】- 简易内存池(B卷-200分)(C版)

🔔本文收录于「最新最全华为OD机试真题(C版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅

**My Coding Family** 961

肖特基二极管选型参数,结构原理,工艺与注意问题总结

肖特基二极管(Schottky Diode)是一种特殊的二极管,也被称为肖特基势垒二极管。它是利用金属与半导体接触形成的金属-半导体结原理制成的。与传统的PN结二极管相比,肖特基二极管具有更低的正向压降、更高的开关速度、更高的反向恢复时间以及更好的温度稳定性等特点。本文对肖特基二极管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 812

多思计组实验实验六 微程序控制器实验

实验六 微程序控制器实验

qq_53089329的博客 3784

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Java校验.CER、.pem证书格式以及获取证书有效期
少年不再NianShao
博客等级 码龄8年 8粉丝 25原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值