【问题标题】:Is it possible to express 2 week periods as a CRON expression as implemented by Quartz?是否可以将 2 周的周期表示为 Quartz 实现的 CRON 表达式?
【发布时间】:2014-02-09 07:17:52
【问题描述】:

从 2014 年 1 月 1 日开始,为期 2 周的时间安排如下:

  1. 1 月 14 日
  2. 1 月 28 日
  3. 2 月 11 日
  4. 2 月 25 日
  5. 3 月 11 日
  6. 3 月 25 日
  7. 4 月 8 日
  8. 4 月 22 日
  9. 5 月 6 日
  10. 5 月 20 日

等等……

这不是一个无聊的问题。一些公司的支付期正好是 2 周,这意味着他们每年有 26 个支付期,而不是每月支付两次而不是每两周支付一次的公司有 24 个支付期。我想知道我是否可以使用 CRON 表达式来表达这种公司的工资表。

最后,可能没有 CRON 表达式可以用来表达我想要的,但是 Quartz 调度器可能有一些棘手的解决方案,最终可以产生所需的调度。请注意,我始终可以创建具有 26 个显式触发器的日历调度程序 - 每个支付期一个。我不是在谈论这种解决方案。

我正在使用 Quartz 库的 .NET 端口。

编辑

恰好每隔一个星期日,同样好的日程安排。请注意,它不等同于每个第 2 和第 4 个星期日。实际上,如果一个月有 5 个星期日,那么如果从第一个星期日开始,第一个时间表可能会导致该特定月份的三个实例。而第二个计划总是每月恰好产生两个实例。

我觉得这样的时间表无法用 CRON 表示,因为它们会逐月延续,而 CRON 会在每次新月份开始时重置其月份触发器。

EDIT2

我想我正在寻找的可以通过一个虚构的 DayOfYear CRON 字段来表达。海拉斯,不存在这样的东西。但话又说回来,我可能错了。

【问题讨论】:

    标签: cron quartz-scheduler quartz.net cronexpression


    【解决方案1】:

    如果您使用的是 2.0 版,那么您可以使用 CalendarIntervalTrigger,将 RepeatIntervalUnit 设置为周,将 RepeatInteval 设置为 2,使其每 2 周触发一次。

    【讨论】:

    • 是的,它比 26 个显式触发器要好。
    猜你喜欢
    • 1970-01-01
    • 2016-08-07
    • 2012-11-04
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    相关资源
    最近更新 更多