石英的Cron计划从特定日期起每周开火一年

时间:2015-08-25 18:57:32

标签: cron quartz-scheduler

我有一个场景,我需要使用石英来安排一个工作,该工作从用户指定的日期开始每周触发,这应该会持续一年。 通过Cron Schedule示例后,我认为下面的cron表达式可能对我有所帮助: 例如。如果指定的日期是31-10-2015,则表达式为:

" 0 30 20 31/7 10-10? 2015-2016"这意味着从3015年10月31日开始,每7天触发1年,即。至2016年10月31日。

如果此表达式存在任何问题,请与我们联系。 感谢.....

1 个答案:

答案 0 :(得分:0)

即使我有相同的要求,我实施如下

我们可以从开始日期开始每七天运行一次,七天转换为小时,价值为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();
希望它有所帮助!!