这是我的cron表达式解析工具类:
public class CronDateUtil {
public static List<String> parser(String cronExpression,int num,String fromatType) {
if(StringUtil.isNullOrEmpty(fromatType)) fromatType="yyyy-MM-dd HH:mm:ss";
List<String> list = new ArrayList<String>();
try {
CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
cronTriggerImpl.setCronExpression(cronExpression);
// 这个是重点,一行代码搞定
List<Date> dates = TriggerUtils.computeFireTimes(cronTriggerImpl, null, num);
SimpleDateFormat dateFormat = new SimpleDateFormat(fromatType);
for (Date date : dates) {
list.add(dateFormat.format(date));
}
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
}
用法:
@Test
public void test3() throws ExecutionException{
String cron="1-2 * * * * ?";
//fromatType传空默认是yyyy-MM-dd HH:mm:ss,需要自定则传入sdf格式
List<String> dt=CronDateUtil.parser(cron,10,null);
}
运行结果:
- [2020-03-27 14:14:01, 2020-03-27 14:14:02, 2020-03-27 14:15:01,
2020-03-27 14:15:02, 2020-03-27 14:16:01, 2020-03-27 14:16:02,
2020-03-27 14:17:01, 2020-03-27 14:17:02, 2020-03-27 14:18:01,
2020-03-27 14:18:02]
获取到了前10条时间数据