Package org.aoju.bus.cron.pattern
Class CronPattern
java.lang.Object
org.aoju.bus.cron.pattern.CronPattern
定时任务表达式
表达式类似于Linux的crontab表达式,表达式使用空格分成5个部分,按顺序依次为:
- 分:范围:0~59
- 时:范围:0~23
- 日:范围:1~31,"L"表示月的最后一天
- 月:范围:1~12,同时支持不区分大小写的别名:"jan","feb", "mar", "apr", "may","jun", "jul", "aug", "sep","oct", "nov", "dec"
- 周:范围:0 (Sunday)~6(Saturday),7也可以表示周日,同时支持不区分大小写的别名:"sun","mon", "tue", "wed", "thu","fri", "sat","L"表示周六
为了兼容Quartz表达式,同时支持6位和7位表达式,其中:
当为6位时,第一位表示秒,范围0~59,但是第一位不做匹配 当为7位时,最后一位表示年,范围1970~2099,但是第7位不做解析,也不做匹配
当定时任务运行到的时间匹配这些表达式后,任务被启动 注意:
当isMatchSecond为true时才会匹配秒部分
默认都是关闭的
对于每一个子表达式,同样支持以下形式:
- *:表示匹配这个位置所有的时间
- ?:表示匹配这个位置任意的时间(与"*"作用一致)
- */2:表示间隔时间,例如在分上,表示每两分钟,同样*可以使用数字列表代替,逗号分隔
- 2-8:表示连续区间,例如在分上,表示2,3,4,5,6,7,8分
- 2,3,5,8:表示列表
- cronA | cronB:表示多个定时表达式
间隔(/) > 区间(-) > 列表(,)
例如 2,3,6/3中,由于“/”优先级高,因此相当于2,3,(6/3),结果与 2,3,6等价
一些例子:
- 5 * * * *:每个点钟的5分执行,00:05,01:05……
- * * * * *:每分钟执行
- * 2 * * * *:每两分钟执行
- * 12 * * *:12点的每分钟执行
- 59 11 * * 1,2:每周一和周二的11:59执行
- 3-18 5 * * * *:3~18分,每5分钟执行一次,既0:03, 0:08, 0:13, 0:18, 1:03, 1:08……
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanmatch(long millis, boolean isMatchSecond) 给定时间是否匹配定时任务表达式booleanmatch(LocalDateTime dateTime, boolean isMatchSecond) 给定时间是否匹配定时任务表达式boolean给定时间是否匹配定时任务表达式boolean给定时间是否匹配定时任务表达式matchedDates(String patternStr, long start, long end, int count, boolean isMatchSecond) 列举指定日期范围内所有匹配表达式的日期matchedDates(String patternStr, Date start, int count, boolean isMatchSecond) 列举指定日期之后(到开始日期对应年年底)内所有匹配表达式的日期matchedDates(String patternStr, Date start, Date end, int count, boolean isMatchSecond) 列举指定日期范围内所有匹配表达式的日期matchedDates(CronPattern pattern, long start, long end, int count, boolean isMatchSecond) 列举指定日期范围内所有匹配表达式的日期static DatenextDateAfter(CronPattern pattern, Date start, boolean isMatchSecond) 列举指定日期之后(到开始日期对应年年底)内第一个匹配表达式的日期nextMatchAfter(Calendar calendar) 返回匹配到的下一个时间static CronPattern解析表达式为 CronPatterntoString()
-
Constructor Details
-
CronPattern
构造- Parameters:
pattern- 表达式
-
-
Method Details
-
of
解析表达式为 CronPattern- Parameters:
pattern- 表达式- Returns:
- this
-
nextDateAfter
列举指定日期之后(到开始日期对应年年底)内第一个匹配表达式的日期- Parameters:
pattern- 表达式start- 起始时间isMatchSecond- 是否匹配秒- Returns:
- 日期
-
matchedDates
public static List<Date> matchedDates(String patternStr, Date start, int count, boolean isMatchSecond) 列举指定日期之后(到开始日期对应年年底)内所有匹配表达式的日期- Parameters:
patternStr- 表达式字符串start- 起始时间count- 列举数量isMatchSecond- 是否匹配秒- Returns:
- 日期列表
-
matchedDates
public static List<Date> matchedDates(String patternStr, Date start, Date end, int count, boolean isMatchSecond) 列举指定日期范围内所有匹配表达式的日期- Parameters:
patternStr- 表达式字符串start- 起始时间end- 结束时间count- 列举数量isMatchSecond- 是否匹配秒- Returns:
- 日期列表
-
matchedDates
public static List<Date> matchedDates(String patternStr, long start, long end, int count, boolean isMatchSecond) 列举指定日期范围内所有匹配表达式的日期- Parameters:
patternStr- 表达式字符串start- 起始时间end- 结束时间count- 列举数量isMatchSecond- 是否匹配秒- Returns:
- 日期列表
-
matchedDates
public static List<Date> matchedDates(CronPattern pattern, long start, long end, int count, boolean isMatchSecond) 列举指定日期范围内所有匹配表达式的日期- Parameters:
pattern- 表达式start- 起始时间end- 结束时间count- 列举数量isMatchSecond- 是否匹配秒- Returns:
- 日期列表
-
match
public boolean match(long millis, boolean isMatchSecond) 给定时间是否匹配定时任务表达式- Parameters:
millis- 时间毫秒数isMatchSecond- 是否匹配秒- Returns:
- 如果匹配返回
true, 否则返回false
-
match
给定时间是否匹配定时任务表达式- Parameters:
timezone- 时区TimeZonemillis- 时间毫秒数isMatchSecond- 是否匹配秒- Returns:
- 如果匹配返回
true, 否则返回false
-
match
给定时间是否匹配定时任务表达式- Parameters:
calendar- 时间isMatchSecond- 是否匹配秒- Returns:
- 如果匹配返回
true, 否则返回false
-
match
给定时间是否匹配定时任务表达式- Parameters:
dateTime- 时间isMatchSecond- 是否匹配秒- Returns:
- 如果匹配返回
true, 否则返回false
-
nextMatchAfter
返回匹配到的下一个时间- Parameters:
calendar- 时间- Returns:
- 匹配到的下一个时间
-
toString
-