mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
aacfa07af2
commit
07de6aa4f0
@ -139,7 +139,8 @@ public class PartParser {
|
|||||||
if (size == 1) {// 普通形式
|
if (size == 1) {// 普通形式
|
||||||
results = parseRange(value, -1);
|
results = parseRange(value, -1);
|
||||||
} else if (size == 2) {// 间隔形式
|
} else if (size == 2) {// 间隔形式
|
||||||
final int step = parseNumber(parts.get(1));
|
// issue#I7SMP7,步进不检查范围
|
||||||
|
final int step = parseNumber(parts.get(1), false);
|
||||||
if (step < 1) {
|
if (step < 1) {
|
||||||
throw new CronException("Non positive divisor for field: [{}]", value);
|
throw new CronException("Non positive divisor for field: [{}]", value);
|
||||||
}
|
}
|
||||||
@ -172,7 +173,7 @@ public class PartParser {
|
|||||||
//根据步进的第一个数字确定起始时间,类似于 12/3则从12(秒、分等)开始
|
//根据步进的第一个数字确定起始时间,类似于 12/3则从12(秒、分等)开始
|
||||||
int minValue = part.getMin();
|
int minValue = part.getMin();
|
||||||
if (!isMatchAllStr(value)) {
|
if (!isMatchAllStr(value)) {
|
||||||
minValue = Math.max(minValue, parseNumber(value));
|
minValue = Math.max(minValue, parseNumber(value, true));
|
||||||
} else {
|
} else {
|
||||||
//在全匹配模式下,如果步进不存在,表示步进为1
|
//在全匹配模式下,如果步进不存在,表示步进为1
|
||||||
if (step < 1) {
|
if (step < 1) {
|
||||||
@ -199,15 +200,15 @@ public class PartParser {
|
|||||||
final List<String> parts = SplitUtil.split(value, StrUtil.DASHED);
|
final List<String> parts = SplitUtil.split(value, StrUtil.DASHED);
|
||||||
final int size = parts.size();
|
final int size = parts.size();
|
||||||
if (size == 1) {// 普通值
|
if (size == 1) {// 普通值
|
||||||
final int v1 = parseNumber(value);
|
final int v1 = parseNumber(value, true);
|
||||||
if (step > 0) {//类似 20/2的形式
|
if (step > 0) {//类似 20/2的形式
|
||||||
NumberUtil.appendRange(v1, part.getMax(), step, results);
|
NumberUtil.appendRange(v1, part.getMax(), step, results);
|
||||||
} else {
|
} else {
|
||||||
results.add(v1);
|
results.add(v1);
|
||||||
}
|
}
|
||||||
} else if (size == 2) {// range值
|
} else if (size == 2) {// range值
|
||||||
final int v1 = parseNumber(parts.get(0));
|
final int v1 = parseNumber(parts.get(0),true);
|
||||||
final int v2 = parseNumber(parts.get(1));
|
final int v2 = parseNumber(parts.get(1), true);
|
||||||
if (step < 1) {
|
if (step < 1) {
|
||||||
//在range模式下,如果步进不存在,表示步进为1
|
//在range模式下,如果步进不存在,表示步进为1
|
||||||
step = 1;
|
step = 1;
|
||||||
@ -242,10 +243,11 @@ public class PartParser {
|
|||||||
* 解析单个int值,支持别名
|
* 解析单个int值,支持别名
|
||||||
*
|
*
|
||||||
* @param value 被解析的值
|
* @param value 被解析的值
|
||||||
|
* @param checkValue 是否检查值在有效范围内
|
||||||
* @return 解析结果
|
* @return 解析结果
|
||||||
* @throws CronException 当无效数字或无效别名时抛出
|
* @throws CronException 当无效数字或无效别名时抛出
|
||||||
*/
|
*/
|
||||||
private int parseNumber(final String value) throws CronException {
|
private int parseNumber(final String value, final boolean checkValue) throws CronException {
|
||||||
int i;
|
int i;
|
||||||
try {
|
try {
|
||||||
i = Integer.parseInt(value);
|
i = Integer.parseInt(value);
|
||||||
@ -263,13 +265,7 @@ public class PartParser {
|
|||||||
i = Week.SUNDAY.ordinal();
|
i = Week.SUNDAY.ordinal();
|
||||||
}
|
}
|
||||||
|
|
||||||
// issue#I7SMP7
|
return checkValue ? part.checkValue(i) : i;
|
||||||
// 年的形式中,如果类似于*/2,不做范围检查
|
|
||||||
if(Part.YEAR.equals(this.part)){
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return part.checkValue(i);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user