cron 表达式是非常强大而复杂的, 在面对cron表达式时, 我们往往会产生困惑, 写出的cron表达式是否会按自己预期的时间执行呢? 对于大多数定时任务而言, 我们并没有办法跟踪校验它是否如期运行. 笔者在进行定时任务开发时也会遇到这样的困惑, 所以便开发了一个模拟定时任务允许时间的工具类. 后来在网上发现也有类似的工具与笔者想法不谋而合, 在线测试地址:http://www.bejson.com/othertools/cronvalidate/. 笔者写了一个专门测试cron表达式触发时间的工具.
public class CronExprUtil {
* @Description: 校验cron 表达式格式是否正确
* @param cron cron 表达式
* @return: true/false
* @author: zongf
* @time: 2019-04-10 10:48:11
public static boolean isCronRight(String cron) {
if (cronExpr==null || cronExpr.trim().isEmpty()
cron 表达式是非常强大而复杂的, 在面对cron表达式时, 我们往往会产生困惑, 写出的cron表达式是否会按自己预期的时间执行呢? 对于大多数定时任务而言, 我们并没有办法跟踪校验它是否如期运行. 笔者在进行定时任务开发时也会遇到这样的困惑, 所以便开发了一个模拟定时任务允许时间的工具类. 后来在网上发现也有类似的工具与笔者想法不谋而合, 在线测试地址:http://www.bejson.c...
public class
Cron
ExprUtil {
private
Cron
ExprUtil() {
throw new IllegalStateException("
Cron
ExprUtil class");
* @param
cron
cron
表达式
* @Description:
校验
cron
表达式
格式是否正确
* @return: true/false
public static bo
<groupId>org.
quartz
-scheduler</groupId>
<artifactId>
quartz
</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.
quartz
-scheduler</groupId&.
计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到
cron
服务器来完成这项工作。
cron
服务器可以根据配置文件约定的时间来执行特定的任务。
在开发中,需要检验
cron
表达式
的合法性以及获取执行时间。在
Cron
Util中实现了这些功能。
二、引入maven依赖
<dependency>
<groupId>com.
cron
uti
本篇不算原创,因为主要内容来自网上的博客,所以给出我参考文章的链接。
本文
cron
表达式
详解的大部分内容参考了[
cron
表达式
详解]和
Quartz
使用总结、
Cron
表达式
这两篇文章。
cron
校验
的内容参考了 判断
cron
表达式
输入是否有效的正则
表达式
和Verifying a
cron
expression is valid in Java 这两篇文章。
一、
表达式
组成
Cron
表达式
是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,
Cron
有如下两种语法格式:
Secon
String regEx = “^\s*(KaTeX parse error: Expected 'EOF', got '#' at position 2: |#̲|\\w+\\s*=|(\\?…”;
String tests = “0 59 08 1,2 1 ?”;
System.out.println(tests.matches(regEx));
通过以上正则
表达式
可以判断
cron
是否正确。...
Quartz
是一款Java开源的Job调度框架,通过
Quartz
可以实现对任务的定时调度、执行等功能。而
Quartz
cron
表达式
则是用来指定
Quartz
Job定时调度规则的一种语法格式。
Quartz
cron
表达式
由6或7个字段组成,以空格分隔,分别表示:
1. 秒(0-59)
2. 分钟(0-59)
3. 小时(0-23)
4. 日(1-31)
5. 月(1-12)
6. 星期(1-7,1表示星期日)
7. 年(可选,1970-2099)
其中,每个字段都可以是一个具体的值、一个逗号分隔的多个值、一个范围值(用“-”连接)、一个递增值(用“/”连接)、一个通配符(用“*”表示所有可能的值)、一个或多个问号(“?”表示不确定的值,用于替代某些字段),或者一个L值(表示最后一个值)。
例如,以下是一些
Quartz
cron
表达式
的示例:
- 每天的10点15分执行:0 15 10 * * ?
- 每天的15点整执行:0 0 15 * * ?
- 每天的18点、20点和22点执行:0 0 18,20,22 * * ?
- 每周一的10点15分执行:0 15 10 ? * 2
- 每月的第三个星期五的10点15分执行:0 15 10 ? * 6#3
需要注意的是,
Quartz
cron
表达式
中的时间都是基于服务器所在时区的。此外,
Quartz
cron
表达式
只能精确到分钟级别,无法精确到秒或毫秒级别。