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 执行状态 考虑: 计划可运行物品的能力 能够计划必须保持无状态(可序列化参数除外)且应通过反射创建的作业的能力(将来支持分布式执行)

用Verilog在FPGA上做个电子琴:从矩阵键盘到蜂鸣器的完整实现(附代码)

本文详细介绍了如何使用Verilog在FPGA上实现一个完整的电子琴系统,涵盖矩阵键盘扫描、音调生成和蜂鸣器驱动等核心模块。通过模块化设计和PWM调制技术,开发者可以构建一个可交互的音乐播放器,项目代码完整且易于扩展,适合FPGA初学者和数字逻辑设计爱好者实践。

weixin_29191669的博客 403

「大模型学习」(14)Long Context之线性插值、NTK-aware、Yarn、LongRoPE

大语言模型长上下文扩展中的位置插值技术 摘要:为解决大语言模型(LLMs)在推理阶段扩展上下文窗口时的位置编码限制,研究人员开发了一系列位置插值技术。这些方法主要针对旋转位置编码(RoPE)机制,通过不同策略调整位置索引以适应超出训练长度的上下文。典型方法包括:基础位置插值(PI)均匀缩放位置索引;NTK-aware插值对不同频率维度差异化处理;NTK-by-parts插值根据波长分段调整;Yarn插值结合温度调节;以及LongRoPE采用非均匀插值策略。这些技术在不修改模型结构的前提下,通过调整位置编码的

qq_43044037的博客 1644

手把手教你解决CentOS sshd启动报错:从权限问题到目录缺失的全套解决方案

本文提供了一套完整的CentOS SSH服务启动故障排查与修复方案。针对sshd启动报错,从systemd日志分析、sshd -t配置测试入手,详细解决了私钥文件权限过宽(如0644错误)和权限分离目录缺失等典型问题,并附带了扩展排查清单,帮助运维人员系统性地定位和解决连接故障。

weixin_29248611的博客 152

Anaconda+清华源加速PyTorch GPU环境安装与CUDA版本匹配指南

深度学习环境管理常面临依赖冲突与下载缓慢问题,通过虚拟环境隔离与镜像源加速可显著提升效率。Anaconda利用conda机制创建独立Python环境,避免包版本冲突;清华源通过国内镜像同步大幅提高下载速度。GPU版PyTorch安装需严格匹配CUDA、cuDNN与显卡驱动版本,否则易出现CUDA不可用错误。该方案适用于图像分割、目标检测等需多版本PyTorch并存的场景,能快速搭建稳定GPU训练环境。本文详解Anaconda安装、清华源配置及PyTorch GPU版安装全流程。

weixin_30522983的博客 235

保姆级教程:SAP ABAPer如何为VF01销售发票和MIRO发票校验配置凭证替代(含AC_DOCUMENT BADI完整代码示例)

本文详细解析了SAP ABAP中通过AC_DOCUMENT BADI实现VF01销售发票和MIRO发票校验的凭证替代技术。从技术选型到BADI实施步骤,再到核心逻辑代码示例,为ABAP开发者提供了一套完整的解决方案,帮助应对财务部门复杂的业务需求。

weixin_30421809的博客 351

YOLOv11改进 | 损失函数篇 | YOLOv11引入引MPDIoU, GIoU,DIoU, CIoU, SIoU,EIoU, WIoU, LMPDIoU等损失函数

到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~1. YOLOv11中添加MPDIoU, GIoU,DIoU, CIoU, SIoU等损失函数的方式。文件中用给出的代码替换掉。

tsg6698的博客 5277

YOLO26 多模态融合技术:RGB+红外/深度/雷达融合

YOLO(You Only Look Once)是一种流行的目标检测算法,其最大特点是快速且端到端地完成图像中所有目标的检测与分类任务。YOLO首次在2016年由Joseph Redmon等人提出,彻底改变了传统目标检测(如R-CNN系列)的思路,被广泛应用于自动驾驶、视频监控、工业质检等场景。

一键难忘的博客 3523

支持UE4.27、UE5.0、UE5.1、UE5.2、UE5.3、UE5.4、UE5.5的VS2022一键安装方法

本文提供了两种安装VS2022以支持UE5开发的方案。方案一通过百度网盘提供一键安装包,下载解压后以管理员身份运行批处理文件即可完成安装。方案二需从微软官网下载安装程序,通过创建包含特定参数的批处理文件来自定义安装组件。两种方案都需保持联网环境,建议先卸载旧版VS。安装完成后可测试打包UEC++项目Windows包。

2501_93651177的博客 354

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

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 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、付费专栏及课程。

余额充值