diff --git a/CHANGELOG.md b/CHANGELOG.md index 47b286e1e..bf4f4ca78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ * 【poi 】 优化ExcelBase,将alias放入 * 【poi 】 优化ExcelBase,将alias放入 * 【core 】 改进StrUtil#startWith、endWith性能 +* 【cron 】 增加CronPatternParser、MatcherTable ### 🐞Bug修复 * 【core 】 修复ObjectUtil.hasNull传入null返回true的问题(pr#555@Gitee) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java index 6df40341a..ab642f7d5 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java @@ -1756,7 +1756,7 @@ public class DateUtil extends CalendarUtil { * @return 是否闰年 */ public static boolean isLeapYear(int year) { - return new GregorianCalendar().isLeapYear(year); + return Year.isLeap(year); } /** 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 4b57f8c8a..ce05317de 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 @@ -1,25 +1,10 @@ package cn.hutool.cron.pattern; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.cron.CronException; -import cn.hutool.cron.pattern.matcher.AlwaysTrueValueMatcher; -import cn.hutool.cron.pattern.matcher.DayOfMonthValueMatcher; -import cn.hutool.cron.pattern.matcher.ValueMatcher; -import cn.hutool.cron.pattern.matcher.ValueMatcherBuilder; -import cn.hutool.cron.pattern.parser.DayOfMonthValueParser; -import cn.hutool.cron.pattern.parser.DayOfWeekValueParser; -import cn.hutool.cron.pattern.parser.HourValueParser; -import cn.hutool.cron.pattern.parser.MinuteValueParser; -import cn.hutool.cron.pattern.parser.MonthValueParser; -import cn.hutool.cron.pattern.parser.SecondValueParser; -import cn.hutool.cron.pattern.parser.ValueParser; -import cn.hutool.cron.pattern.parser.YearValueParser; +import cn.hutool.cron.pattern.matcher.MatcherTable; +import cn.hutool.cron.pattern.parser.CronPatternParser; -import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; -import java.util.List; import java.util.TimeZone; /** @@ -32,14 +17,14 @@ import java.util.TimeZone; *
  • :范围: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位不做解析,也不做匹配
      * 
    - * + *

    * 当定时任务运行到的时间匹配这些表达式后,任务被启动。
    * 注意: * @@ -47,7 +32,7 @@ import java.util.TimeZone; * 当isMatchSecond为{@code true}时才会匹配秒部分 * 默认都是关闭的 * - * + *

    * 对于每一个子表达式,同样支持以下形式: *