This commit is contained in:
Looly 2021-07-16 00:46:11 +08:00
parent dfa10be599
commit e9e46b950d

View File

@ -26,56 +26,56 @@ import java.util.TimeZone;
* 定时任务表达式<br> * 定时任务表达式<br>
* 表达式类似于Linux的crontab表达式表达式使用空格分成5个部分按顺序依次为 * 表达式类似于Linux的crontab表达式表达式使用空格分成5个部分按顺序依次为
* <ol> * <ol>
* <li><strong></strong>范围0~59</li> * <li><strong></strong> 范围0~59</li>
* <li><strong></strong>范围0~23</li> * <li><strong></strong> 范围0~23</li>
* <li><strong></strong>范围1~31<strong>"L"</strong>表示月的最后一天</li> * <li><strong></strong> 范围1~31<strong>"L"</strong> 表示月的最后一天</li>
* <li><strong></strong>范围1~12同时支持不区分大小写的别名"jan","feb", "mar", "apr", "may","jun", "jul", "aug", "sep","oct", "nov", "dec"</li> * <li><strong></strong> 范围1~12同时支持不区分大小写的别名"jan","feb", "mar", "apr", "may","jun", "jul", "aug", "sep","oct", "nov", "dec"</li>
* <li><strong></strong>范围0 (Sunday)~6(Saturday)7也可以表示周日同时支持不区分大小写的别名"sun","mon", "tue", "wed", "thu","fri", "sat"<strong>"L"</strong>表示周六</li> * <li><strong></strong> 范围0 (Sunday)~6(Saturday)7也可以表示周日同时支持不区分大小写的别名"sun","mon", "tue", "wed", "thu","fri", "sat"<strong>"L"</strong> 表示周六</li>
* </ol> * </ol>
* *
* 为了兼容Quartz表达式同时支持6位和7位表达式其中<br> * 为了兼容Quartz表达式同时支持6位和7位表达式其中<br>
* *
* <pre> * <pre>
* 当为6位时第一位表示<strong></strong>范围0~59但是第一位不做匹配 * 当为6位时第一位表示<strong></strong> 范围0~59但是第一位不做匹配
* 当为7位时最后一位表示<strong></strong>范围1970~2099但是第7位不做解析也不做匹配 * 当为7位时最后一位表示<strong></strong> 范围1970~2099但是第7位不做解析也不做匹配
* </pre> * </pre>
* *
* 当定时任务运行到的时间匹配这些表达式后任务被启动<br> * 当定时任务运行到的时间匹配这些表达式后任务被启动<br>
* 注意 * 注意
* *
* <pre> * <pre>
* 当isMatchSecond为<code>true</code>时才会匹配秒部分 * 当isMatchSecond为<code>true</code>时才会匹配秒部分
* 默认都是关闭的 * 默认都是关闭的
* </pre> * </pre>
* *
* 对于每一个子表达式同样支持以下形式 * 对于每一个子表达式同样支持以下形式
* <ul> * <ul>
* <li><strong>*</strong>表示匹配这个位置所有的时间</li> * <li><strong>*</strong> 表示匹配这个位置所有的时间</li>
* <li><strong>?</strong>表示匹配这个位置任意的时间"*"作用一致</li> * <li><strong>?</strong> 表示匹配这个位置任意的时间"*"作用一致</li>
* <li><strong>*&#47;2</strong>表示间隔时间例如在分上表示每两分钟同样*可以使用数字列表代替逗号分隔</li> * <li><strong>*&#47;2</strong> 表示间隔时间例如在分上表示每两分钟同样*可以使用数字列表代替逗号分隔</li>
* <li><strong>2-8</strong>表示连续区间例如在分上表示2,3,4,5,6,7,8分</li> * <li><strong>2-8</strong> 表示连续区间例如在分上表示2,3,4,5,6,7,8分</li>
* <li><strong>2,3,5,8</strong>表示列表</li> * <li><strong>2,3,5,8</strong> 表示列表</li>
* <li><strong>cronA | cronB</strong>表示多个定时表达式</li> * <li><strong>cronA | cronB</strong> 表示多个定时表达式</li>
* </ul> * </ul>
* 注意在每一个子表达式中优先级 * 注意在每一个子表达式中优先级
* *
* <pre> * <pre>
* 间隔/ &gt; 区间- &gt; 列表, * 间隔/ &gt; 区间- &gt; 列表,
* </pre> * </pre>
* *
* 例如 2,3,6/3中由于/优先级高因此相当于2,3,(6/3)结果与 2,3,6等价<br> * 例如 2,3,6/3中由于/优先级高因此相当于2,3,(6/3)结果与 2,3,6等价<br>
* <br> * <br>
* *
* 一些例子 * 一些例子
* <ul> * <ul>
* <li><strong>5 * * * *</strong>每个点钟的5分执行00:05,01:05</li> * <li><strong>5 * * * *</strong> 每个点钟的5分执行00:05,01:05</li>
* <li><strong>* * * * *</strong>每分钟执行</li> * <li><strong>* * * * *</strong> 每分钟执行</li>
* <li><strong>*&#47;2 * * * *</strong>每两分钟执行</li> * <li><strong>*&#47;2 * * * *</strong> 每两分钟执行</li>
* <li><strong>* 12 * * *</strong>12点的每分钟执行</li> * <li><strong>* 12 * * *</strong> 12点的每分钟执行</li>
* <li><strong>59 11 * * 1,2</strong>每周一和周二的11:59执行</li> * <li><strong>59 11 * * 1,2</strong> 每周一和周二的11:59执行</li>
* <li><strong>3-18&#47;5 * * * *</strong>3~18分每5分钟执行一次即0:03, 0:08, 0:13, 0:18, 1:03, 1:08</li> * <li><strong>3-18&#47;5 * * * *</strong> 3~18分每5分钟执行一次即0:03, 0:08, 0:13, 0:18, 1:03, 1:08</li>
* </ul> * </ul>
* *
* @author Looly * @author Looly
* *
*/ */
@ -110,7 +110,7 @@ public class CronPattern {
/** /**
* 构造 * 构造
* *
* @param pattern 表达式 * @param pattern 表达式
*/ */
public CronPattern(String pattern) { public CronPattern(String pattern) {
@ -121,7 +121,7 @@ public class CronPattern {
// --------------------------------------------------------------------------------------- match start // --------------------------------------------------------------------------------------- match start
/** /**
* 给定时间是否匹配定时任务表达式 * 给定时间是否匹配定时任务表达式
* *
* @param millis 时间毫秒数 * @param millis 时间毫秒数
* @param isMatchSecond 是否匹配秒 * @param isMatchSecond 是否匹配秒
* @return 如果匹配返回 <code>true</code>, 否则返回 <code>false</code> * @return 如果匹配返回 <code>true</code>, 否则返回 <code>false</code>
@ -132,7 +132,7 @@ public class CronPattern {
/** /**
* 给定时间是否匹配定时任务表达式 * 给定时间是否匹配定时任务表达式
* *
* @param timezone 时区 {@link TimeZone} * @param timezone 时区 {@link TimeZone}
* @param millis 时间毫秒数 * @param millis 时间毫秒数
* @param isMatchSecond 是否匹配秒 * @param isMatchSecond 是否匹配秒
@ -146,7 +146,7 @@ public class CronPattern {
/** /**
* 给定时间是否匹配定时任务表达式 * 给定时间是否匹配定时任务表达式
* *
* @param calendar 时间 * @param calendar 时间
* @param isMatchSecond 是否匹配秒 * @param isMatchSecond 是否匹配秒
* @return 如果匹配返回 <code>true</code>, 否则返回 <code>false</code> * @return 如果匹配返回 <code>true</code>, 否则返回 <code>false</code>
@ -185,7 +185,7 @@ public class CronPattern {
// -------------------------------------------------------------------------------------- Private method start // -------------------------------------------------------------------------------------- Private method start
/** /**
* 是否匹配日指定月份的第几天 * 是否匹配日指定月份的第几天
* *
* @param matcher {@link ValueMatcher} * @param matcher {@link ValueMatcher}
* @param dayOfMonth * @param dayOfMonth
* @param month * @param month
@ -200,7 +200,7 @@ public class CronPattern {
/** /**
* 是否匹配指定的日期时间位置 * 是否匹配指定的日期时间位置
* *
* @param matchers 匹配器列表 * @param matchers 匹配器列表
* @param index 位置 * @param index 位置
* @param value 被匹配的值 * @param value 被匹配的值
@ -213,7 +213,7 @@ public class CronPattern {
/** /**
* 解析复合任务表达式 * 解析复合任务表达式
* *
* @param groupPattern 复合表达式 * @param groupPattern 复合表达式
*/ */
private void parseGroupPattern(String groupPattern) { private void parseGroupPattern(String groupPattern) {
@ -225,7 +225,7 @@ public class CronPattern {
/** /**
* 解析单一定时任务表达式 * 解析单一定时任务表达式
* *
* @param pattern 表达式 * @param pattern 表达式
*/ */
private void parseSinglePattern(String pattern) { private void parseSinglePattern(String pattern) {