From 1e5d8badfd36cca2755773ad0589c998daacc394 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 29 Mar 2022 11:02:37 +0800 Subject: [PATCH] fix cocde --- .../cn/hutool/cron/pattern/CronPattern.java | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/hutool-cron/src/main/java/cn/hutool/cron/pattern/CronPattern.java b/hutool-cron/src/main/java/cn/hutool/cron/pattern/CronPattern.java index 384d26497..26964fbcf 100644 --- a/hutool-cron/src/main/java/cn/hutool/cron/pattern/CronPattern.java +++ b/hutool-cron/src/main/java/cn/hutool/cron/pattern/CronPattern.java @@ -125,15 +125,8 @@ public class CronPattern { * @return 如果匹配返回 {@code true}, 否则返回 {@code false} */ public boolean match(Calendar calendar, boolean isMatchSecond) { - final int second = isMatchSecond ? calendar.get(Calendar.SECOND) : -1; - final int minute = calendar.get(Calendar.MINUTE); - final int hour = calendar.get(Calendar.HOUR_OF_DAY); - final int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); - final int month = calendar.get(Calendar.MONTH) + 1;// 月份从1开始 - final int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期从0开始,0和7都表示周日 - final int year = calendar.get(Calendar.YEAR); - - return match(second, minute, hour, dayOfMonth, month, dayOfWeek, year); + final int[] fields = getFields(calendar, isMatchSecond); + return match(fields[0], fields[1], fields[2], fields[3], fields[4], fields[5], fields[6]); } /** @@ -144,15 +137,7 @@ public class CronPattern { * @return 匹配到的下一个时间 */ public Calendar nextMatchAfter(Calendar calendar) { - final int second = calendar.get(Calendar.SECOND); - final int minute = calendar.get(Calendar.MINUTE); - final int hour = calendar.get(Calendar.HOUR_OF_DAY); - final int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); - final int month = calendar.get(Calendar.MONTH) + 1;// 月份从1开始 - final int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期从0开始,0和7都表示周日 - final int year = calendar.get(Calendar.YEAR); - - return nextMatchAfter(new int[]{second, minute, hour, dayOfMonth, month, dayOfWeek, year}, calendar.getTimeZone()); + return nextMatchAfter(getFields(calendar, true), calendar.getTimeZone()); } @Override @@ -184,8 +169,8 @@ public class CronPattern { /** * 获取下一个最近的匹配日期时间 * - * @param values 时间字段值 - * @param zone 时区 + * @param values 时间字段值 + * @param zone 时区 * @return {@link Calendar} */ private Calendar nextMatchAfter(int[] values, TimeZone zone) { @@ -196,4 +181,24 @@ public class CronPattern { // 返回匹配到的最早日期 return CollUtil.min(nextMatches); } + + /** + * 获取处理后的字段列表
+ * 月份从1开始,周从0开始 + * + * @param calendar {@link Calendar} + * @param isMatchSecond 是否匹配秒,{@link false}则秒返回-1 + * @return 字段值列表 + * @since 5.8.0 + */ + private int[] getFields(Calendar calendar, boolean isMatchSecond) { + final int second = isMatchSecond ? calendar.get(Calendar.SECOND) : -1; + final int minute = calendar.get(Calendar.MINUTE); + final int hour = calendar.get(Calendar.HOUR_OF_DAY); + final int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); + final int month = calendar.get(Calendar.MONTH) + 1;// 月份从1开始 + final int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期从0开始,0和7都表示周日 + final int year = calendar.get(Calendar.YEAR); + return new int[]{second, minute, hour, dayOfMonth, month, dayOfWeek, year}; + } }