diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/ConsoleTableTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/ConsoleTableTest.java
index 119df15f3..2bfc468fc 100644
--- a/hutool-core/src/test/java/cn/hutool/core/lang/ConsoleTableTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/lang/ConsoleTableTest.java
@@ -1,11 +1,12 @@
package cn.hutool.core.lang;
+import org.junit.Ignore;
import org.junit.Test;
public class ConsoleTableTest {
@Test
-// @Ignore
+ @Ignore
public void printTest() {
ConsoleTable t = new ConsoleTable();
t.addHeader("姓名", "年龄");
diff --git a/hutool-cron/src/main/java/cn/hutool/cron/pattern/matcher/PatternMatcher.java b/hutool-cron/src/main/java/cn/hutool/cron/pattern/matcher/PatternMatcher.java
index ce4f63e85..dc390989d 100644
--- a/hutool-cron/src/main/java/cn/hutool/cron/pattern/matcher/PatternMatcher.java
+++ b/hutool-cron/src/main/java/cn/hutool/cron/pattern/matcher/PatternMatcher.java
@@ -103,14 +103,19 @@ public class PatternMatcher {
//region nextMatchAfter
/**
- * 获取下一个匹配日期时间
+ * 获取下一个匹配日期时间
+ * 获取方法是,先从年开始查找对应部分的下一个值:
+ *
+ * - 如果此部分下个值不变,获取下一个部分
+ * - 如果此部分下个值大于给定值,以下所有值置为最小值
+ * - 如果此部分下个值小于给定值,回退到上一个值获取下一个新值,之后的值置为最小值
+ *
*
* @param values 时间字段值
* @param zone 时区
* @return {@link Calendar}
*/
public Calendar nextMatchAfter(int[] values, TimeZone zone) {
-
Calendar calendar = Calendar.getInstance(zone);
int i = Part.YEAR.ordinal();
@@ -134,10 +139,10 @@ public class PatternMatcher {
}
// 值产生回退,向上查找变更值
- if(-1 == nextValue){
- while(i <= Part.YEAR.ordinal()){
+ if (-1 == nextValue) {
+ while (i <= Part.YEAR.ordinal()) {
nextValue = matchers[i].nextAfter(values[i] + 1);
- if(nextValue > values[i]){
+ if (nextValue > values[i]) {
setValue(calendar, Part.of(i), nextValue);
i--;
break;
@@ -190,14 +195,19 @@ public class PatternMatcher {
//endregion
/**
- * 设置对应部分修正后的值
+ * 设置对应部分修正后的值
+ *
+ * - 月在表达式中从1开始,但是{@link Calendar}中是从0开始的,需要-1
+ * - 周在表达式中从0开始(0表示周日),但是{@link Calendar}中是从1开始的(1表示周日),需要+1
+ *
+ *
* @param calendar {@link Calendar}
- * @param part 表达式部分
- * @param value 值
+ * @param part 表达式部分
+ * @param value 值
* @return {@link Calendar}
*/
- private Calendar setValue(Calendar calendar, Part part, int value){
- switch (part){
+ private Calendar setValue(Calendar calendar, Part part, int value) {
+ switch (part) {
case MONTH:
value -= 1;
break;