【问题标题】:Quartz cron - running on previous date in case day does not existQuartz cron - 在不存在的情况下在前一个日期运行
【发布时间】:2021-11-27 06:04:49
【问题描述】:

我正在尝试为石英调度程序编写一个 cron 表达式。

要求是,如果一个月中的某天不存在(例如 30)- 作业将在最近的一天运行。

例如:2 月将在 28 日运行,但在 11 月至 30 日运行。

我在这里看到了答案:quartz-cron-what-if-the-day-of-month-does-not-exist 但是有没有更好的方法来执行它?

【问题讨论】:

  • 是每月的最后一天还是 2 月 28 日,其他日期是 30 日?
  • 2 月 28 日,其他所有地区 30 日
  • 我不确定这是否可以使用一个表达式,因为您需要使用“xor”构造。您可以尝试 2 种表达方式:1 表示 2 月的最后一天(使用 L),1 表示除 2 月之外的每个月的 30 日。

标签: java cron quartz-scheduler


【解决方案1】:

我的做法是,
从 28 日开始,每月 3 天运行 CRON。
分别是 28、29、30(如果需要,闰年为 29)
并在程序中设置条件以判断月份是否为二月并执行相应的操作,

Cron 表达式会是,

00 00 28,29,30 * * 

逻辑如下:

 if the month is Feb {
       check if Date is last date of the month
       {
          ​perform required action
       }        
 }
 else if the date is 30th of month
 {
     perform required action
 }

希望这会有所帮助,因为我不使用 Java,所以我只给出了逻辑

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2023-01-25
    • 2017-11-16
    • 1970-01-01
    • 2016-08-07
    相关资源
    最近更新 更多