diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a5654dac..608c7c33f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,10 @@ ### 新特性 * 【core 】 ImgUtil.createImage支持背景透明(issue#851@Github) * 【json 】 更改JSON转字符串时" max){ this.min = max; @@ -26,6 +32,11 @@ public class SimpleValueParser implements ValueParser { @Override public int parse(String value) throws CronException { + if("L".equalsIgnoreCase(value)){ + // L表示最大值 + return max; + } + int i; try { i = Integer.parseInt(value); diff --git a/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternTest.java b/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternTest.java index e1d57107c..3785330c0 100644 --- a/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternTest.java +++ b/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternTest.java @@ -125,6 +125,22 @@ public class CronPatternTest { assertMatch(pattern, "2017-02-19 04:20:33"); } + @Test + public void lastTest() { + // 每月最后一天的任意时间 + CronPattern pattern = new CronPattern("* * * L * ?"); + assertMatch(pattern, "2017-07-31 04:20:00"); + assertMatch(pattern, "2017-02-28 04:20:00"); + + // 最后一个月的任意时间 + pattern = new CronPattern("* * * * L ?"); + assertMatch(pattern, "2017-12-02 04:20:00"); + + // 任意天的最后时间 + pattern = new CronPattern("L L L * * ?"); + assertMatch(pattern, "2017-12-02 23:59:59"); + } + @Test(expected = CronException.class) public void rangeYearTest() { // year的范围是1970~2099年,超出报错