spring实战代码之解析CRON表达式
如果我们要用spring的定时器功能,那么一般会用CRON表达式,事实上,每个框架实现的CRON解析还不同,所以需要用相应的解析规则:
import org.springframework.scheduling.support.CronSequenceGenerator;
try {
int size = 10;
// 每月1号执行
String cron = "0 0 0 1 1/1 ?";
final CronSequenceGenerator g = new CronSequenceGenerator(cron);
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<String> res = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
d = g.next(d);
res.add(sdf.format(d));
}
res.forEach(System.out::println);
} catch (Exception e) {
e.printStackTrace();
}
以上代码返回10条符合表达式的时间:
2020-05-01 00:00:00
2020-06-01 00:00:00
2020-07-01 00:00:00
2020-08-01 00:00:00
2020-09-01 00:00:00
2020-10-01 00:00:00
2020-11-01 00:00:00
2020-12-01 00:00:00
2021-01-01 00:00:00
2021-02-01 00:00:00