java - Quartz CronTrigger - 触发时间
问题描述
我正在使用石英 cron 表达式来构建 n 个计划事件,我有一个开始日期和结束日期,但是,当一个 crate 表达式时,第二个事件 (getNextValidTimeAfter) 是错误的......
- 08-03-19 08:00:00 -- 第一次约会
- 05-04-19 08:00:00 -- 日期错误...
- 05-07-19 08:00:00
- 04-10-19 08:00:00
遵循表达式
0 0 8 ? 1/3 周五#1 *
org.quartz.CronExpression expression = new org.quartz.CronExpression(cronExpression.getExpression());
List<Schedule> scheduleList = new ArrayList<>();
Date nextExecutionDate = cronExpression.getStartDate();
boolean first = true;
while (true) {
Schedule schedule = new Schedule();
schedule.setStatus(Enums.StatusSchedule.PROGRAMADO);
schedule.setCronExpression(cronExpression);
schedule.setServiceOrderType(cronExpression.getServiceOrderType());
schedule.setEstimatedTime(cronExpression.getEstimatedTime());
if (first == false)
nextExecutionDate = expression.getNextValidTimeAfter(nextExecutionDate);
else
first = false;
if (cronExpression.getEndDate().compareTo(nextExecutionDate) <= 0)
break;
schedule.setScheduleDate(nextExecutionDate);
if (CollectionUtils.isEmpty(schedule.getScheduleItems()))
schedule.setScheduleItems(new ArrayList<>());
for (GenericShelfData genericShelfData : genericShelfDataList) {
ScheduleItem scheduleItem = new ScheduleItem();
scheduleItem.setStatus(Enums.StatusSchedule.PROGRAMADO);
scheduleItem.setSchedule(schedule);
scheduleItem.setGenericShelfData(genericShelfData);
scheduleItem.setScheduleSeparate(Enums.YesOrNo.NAO);
schedule.getScheduleItems().add(scheduleItem);
}
scheduleList.add(schedule);
}
解决方案
我的表达是错误的......正确的是...... 0 0 8 ?3/3 周五#2 *
我使用此站点构建表达式:https ://www.freeformatter.com/cron-expression-generator-quartz.html
推荐阅读
- android - 让视图成为背景的“窗口”
- python - 如何在主函数中捕获异常,而不是在导入的库中
- javascript - 如何在按钮单击时更改整个 div 内容
- command-line-interface - databricks cli:收到 b'Bad 请求错误
- c++ - 调试时 Visual Studio Code g++ 不能用 c++17 编译
- html - 无法获得块之间的空间
- java - Quarkus 构建失败:拦截器没有绑定:org.jboss.solder.exception.control.ExceptionHandledInterceptor
- vue.js - 强制区分大小写的导入路径
- linux-kernel - gpg:没有找到有效的 OpenPGP 数据;使用添加存储库
- android - 谷歌地图 onMapClickListener