我有一个场景,我需要使用quartz调度一个作业,该作业从用户指定的日期开始每周触发一次,并且应该持续一年。看过Cron调度示例后,我认为下面的cron表达式可能会对我有所帮助:例如。如果指定的日期是31-10-2015,则表达式为:
“0 30 20 31/7 10-10 ? 2015-2016”,即从3015年10月31日开始,每隔7天触发一次,为期1年。至2016年10月31日。
如果这个表达式有任何问题,请告诉我。谢谢……
发布于 2015-08-27 16:11:43
根据CronMaker.Com,您的cron-expression无效。看看你的cron表达式,我有以下几点:
结束
下面是正确的cron表达式:
0 30 20 ? * 2,3,4,5,6,7,1 2015,2016 //Runs all days of week要在2016年10月31日到期,您必须在创建此职务时提供结束时间。
更新:
如果您想在一周中的某一天启动此作业,它将如下所示:
0 30 20 ? * MON 2015,2016 //Runs every week on monday发布于 2017-07-21 09:03:17
即使我有同样的需求,我也实现了如下
我们可以从开始日期开始每七天运行一次,转换为小时后的七天,值为168
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("json", json);
String startDateStr = "2017-06-21 00:00:00.0";
Date startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(startDateStr);
String endDateStr = "2018-06-21 00:00:00.0";
Date endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(endDateStr);
JobDetail job = newJob(SimpleJob.class).withIdentity(name, "group1").build();
Trigger trigger = TriggerBuilder.newTrigger()
.startAt(startDate)
.withSchedule(
SimpleScheduleBuilder.simpleSchedule().withIntervalInHours(168).repeatForever())
.endAt(endDate)
.usingJobData(jobDataMap)
.build();
sched.scheduleJob(job, trigger);
sched.start();希望它能有所帮助!!
https://stackoverflow.com/questions/32211929
复制相似问题