【问题标题】:Cron Expression for monthly job月度作业的 Cron 表达式
【发布时间】:2018-05-28 14:15:45
【问题描述】:

我想在每个月的 14 号运行调度程序作业,如果这一天是周末,调度程序作业应该是这一天的前一天。这个的 cron 表达式是什么?

【问题讨论】:

  • 你应该在你的工作中处理这个问题。你不能在 cron 中做这种异常。
  • @selman 是正确的,您可以访问此web 并尝试一些组合以满足您的需求。
  • @selman 是的,我们不能在 cron 中添加这种表达式,因为我们无法灵活地在 cron 上添加条件。我认为我们可以使用调用脚本,或者它应该在 Java 中处理,如下所示。我们应该在 12 日编写 cron 来挑选工作,并且从 java 端我们需要添加以下条件: 1. 如果 12 是星期五,则继续其他进程。 2. 如果星期四是 12,则将 fireTime 更改为 13。 3. 如果星期三是 12,则将 fireTime 更改为 14。如果您有其他解决方案,请建议我。

标签: java cron quartz-scheduler job-scheduling


【解决方案1】:

我猜你可以扩展CronTriggerImpl 来创建NotOnWeekendsCronTrigger。例如:

public class NotOnWeekendsCronTrigger extends CronTriggerImpl {
    public Date getFireTimeAfter(Date afterTime) {
       return weekdayBefore(super.getFireTimeAfter(afterTime));
    }
    public Date getNextFireTime() {
       return weekdayBefore(super.getNextFireTime());
    }
    protected Date weekdayBefore(Date date) {
       // TODO implement
    }
    // etc etc
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2012-10-23
    • 2013-12-19
    • 1970-01-01
    • 2018-11-17
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多