【问题标题】:Cron Expression to be executed every n weeks每 n 周执行一次 Cron 表达式
【发布时间】:2013-10-08 23:15:28
【问题描述】:

我正在尝试编写一个每 n 周触发一次的 Cron 表达式。

我想过这样的事情:

0   0  */21 *   *

2013-09-01 00:00:00
2013-09-22 00:00:00
2013-10-01 00:00:00
2013-10-22 00:00:00

每个this Cron 测试员

但除了 21 日之外,它每隔 1 日触发一次。

想法?

【问题讨论】:

    标签: cron quartz-scheduler cronexpression


    【解决方案1】:

    如果您使用的是Quartz,那么您可以使用SimpleTrigger 来完成该计划:

         Trigger trigger = newTrigger() 
             .withIdentity(triggerKey("myTrigger", "myGroup"))
             .withSchedule(simpleSchedule()
                 .repeatHourlyForever(n * 7 * 24))
             .startAt(...)
             .build();
    

    【讨论】:

      【解决方案2】:

      “/”语法指定期间的增量,而不是重复间隔。诚然,这是一个微妙而令人困惑的区别。

      在这种情况下,1 个月期间只有一个可用增量(21 天)。第一个数字指定开始的值,在本例中为 0。在“/”之前指定“*”相当于指定 0。因此作业只会在第一天和第 21 天触发。

      如果您只想每月解雇一次工作而不是重复,那么您可以使用表达式0 0 21 * *

      如果您希望定期触发作业,则可以使用 Quartz SimpleTrigger 并指定 repeatInterval

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-18
        • 2012-01-23
        相关资源
        最近更新 更多