public static boolean isValid(String cronExpression)
return CronExpression.isValidExpression(cronExpression);
* 返回一个字符串值,表示该消息无效Cron表达式给出有效性
* @param cronExpression Cron表达式
* @return String 无效时返回表达式错误描述,如果有效返回null
public static String getInvalidMessage(String cronExpression)
new CronExpression(cronExpression);
return null;
catch (ParseException pe)
return pe.getMessage();
* 返回下一个执行时间根据给定的Cron表达式
* @param cronExpression Cron表达式
* @return Date 下次Cron表达式执行时间
public static Date getNextExecution(String cronExpression)
CronExpression cron = new CronExpression(cronExpression);
return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
catch (ParseException e)
throw new IllegalArgumentException(e.getMessage());
/** *cron表达式工具类 * */public class CronUtils{ /** * 返回一个布尔值代表一个给定的Cron表达式的有效性 * * @param cronExpression Cron表达式 * @return boolean 表达式是否有效 */ public static boolean isValid(String cronExpression) { return Cron.
7.年份(1970-2099)
其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?.
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
有些子
表达式
能包含一些范围或列表
例如:子
表达式
(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”
“*”字符代表所有可能的值
因此,“*”在子
表达式
(月)里表示每个月的含义,“*”在子
表达式
(天(星期))表示星期的每一天
本篇不算原创,因为主要内容来自网上的博客,所以给出我参考文章的链接。
本文
cron
表达式
详解的大部分内容参考了[
cron
表达式
详解]和Quartz使用总结、
Cron
表达式
这两篇文章。
cron
校验
的内容参考了 判断
cron
表达式
输入
是否
有效
的正则
表达式
和Verifying a
cron
expression is valid in
Java
这两篇文章。
一、
表达式
组成
Cron
表达式
是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,
Cron
有如下两种语法格式:
Secon
import
java
.text.ParseException;
import
java
.util.Date;
import org.quartz.
Cron
Expression;
public class
Cron
Parser {
public static void main(String[] args) {
String
cron
Expression = " /5 * * * ?";
try {
Cron
Expression
cron
= new
Cron
Expression(
cron
Expression);
Date nextValidTime =
cron
.getNextValidTimeAfter(new Date());
System.out.println(nextValidTime);
} catch (ParseException e) {
e.printStackTrace();
这个示例代码可以解析
cron
表达式
,并输出下一次执行时间。