Quartz cron表达式每5周执行一次(35天)

时间:2017-10-11 06:29:09

标签: java cron quartz-scheduler

我试图找出在5周内执行一次的cron表达式,即从特定日期起35天。我无法直接使用石英找到解决方案。

LINK HERE

有人可以提供建议吗?

3 个答案:

答案 0 :(得分:0)

没有直接解决方案。

以下解决方案可以帮助您:

使用下面的cron在quartz中创建一个作业,将* _JOB_DETAILS表job_data列数据作为下一个触发时间的毫秒。

It will run every week(You can make this every day also). 
0 0 12 ? * MON *

Quartz作业将每周(周一中午12:00)调用java应用程序。在您的业务逻辑上检查job_data与当前时间。如果超过执行你的逻辑,否则什么也不做。执行逻辑更新后,JOB_DATA的时间低于下限,然后下一个触发时间将存储在job_data中。

Calendar c=new GregorianCalendar();
c.add(Calendar.DATE, 35);
c.getTime();//add this data

您将获得预期的结果。

答案 1 :(得分:0)

无意义地编写这样的表达式(它不起作用),尝试使用http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-05.html而不是cron表达式,它不适合这种类型的作业。

答案 2 :(得分:0)

如Puchacz所述,cron表达式不适合这些类型的计划。您应该将CalendarIntervalTrigger与周重复间隔单位一起使用,将5用作重复间隔。在代码方面,在Quartz中使用cron和日历间隔触发器几乎没有任何区别。

请参阅下文,了解在2017年11月1日午夜开始触发的CalendarIntervalTrigger的示例计划。通过更改开始时间,您可以调整希望解雇作业的时间。

[Sample CalendarIntervalTrigger