CronPattern support L

This commit is contained in:
Looly 2020-04-25 19:23:42 +08:00
parent e568b7896b
commit 63732834ac
3 changed files with 30 additions and 2 deletions

View File

@ -8,9 +8,10 @@
### 新特性
* 【core 】 ImgUtil.createImage支持背景透明issue#851@Github
* 【json 】 更改JSON转字符串时"</"被转义的规则为不转义issue#852@Github
* 【cron 】 表达式的所有段支持L关键字issue#849@Github
### Bug修复
* 【http 】 修复URL中有`&amp;`导致的问题issue#850@Github
* 【core 】 修复URLBuilder中请求参数有`&amp;`导致的问题issue#850@Github
-------------------------------------------------------------------------------------------------------------

View File

@ -13,7 +13,13 @@ public class SimpleValueParser implements ValueParser {
protected int min;
/** 最大值(包括) */
protected int max;
/**
* 构造
*
* @param min 最小值包括
* @param max 最大值包括
*/
public SimpleValueParser(int min, int max) {
if(min > 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);

View File

@ -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年超出报错