首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >quartz中的Cron计划从特定日期开始每周一次,为期一年

quartz中的Cron计划从特定日期开始每周一次,为期一年
EN

Stack Overflow用户
提问于 2015-08-26 02:57:32
回答 2查看 2.2K关注 0票数 1

我有一个场景,我需要使用quartz调度一个作业,该作业从用户指定的日期开始每周触发一次,并且应该持续一年。看过Cron调度示例后,我认为下面的cron表达式可能会对我有所帮助:例如。如果指定的日期是31-10-2015,则表达式为:

“0 30 20 31/7 10-10 ? 2015-2016”,即从3015年10月31日开始,每隔7天触发一次,为期1年。至2016年10月31日。

如果这个表达式有任何问题,请告诉我。谢谢……

EN

回答 2

Stack Overflow用户

发布于 2015-08-27 16:11:43

根据CronMaker.Com,您的cron-expression无效。看看你的cron表达式,我有以下几点:

  1. 您的作业将在晚上8:30触发
  2. 它是每周运行一周的所有7天的作业
  3. 它在2016

结束

下面是正确的cron表达式:

代码语言:javascript
运行
复制
0 30 20 ? * 2,3,4,5,6,7,1 2015,2016 //Runs all days of week

要在2016年10月31日到期,您必须在创建此职务时提供结束时间。

更新:

如果您想在一周中的某一天启动此作业,它将如下所示:

代码语言:javascript
运行
复制
0 30 20 ? * MON 2015,2016 //Runs every week on monday
票数 1
EN

Stack Overflow用户

发布于 2017-07-21 09:03:17

即使我有同样的需求,我也实现了如下

我们可以从开始日期开始每七天运行一次,转换为小时后的七天,值为168

代码语言:javascript
运行
复制
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();

希望它能有所帮助!!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32211929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档