【问题标题】:use day of month and day of week both in cron expression在 cron 表达式中使用月份和星期几
【发布时间】:2017-04-27 05:35:33
【问题描述】:

我探索并发现在quartz cron表达式中:

sec min hour day_of_month month day_of_week year, 

我们可以提供day_of_monthday_of_week,但不能同时提供两者,因为它还没有实现。

我想在每个two weeks 之后以及周一、周四、周五下午 12 点运行调度程序,那么我该如何实现。

提供以下 cron 表达式将不起作用:

* * 12 1/14 * MON, THU, FRI *

因为我们不能同时提供day_of_week and day_of_month

所以,请让我知道是否存在任何其他方法,其他库等。我不想在业务逻辑中处理它,而简单地使用 cronexpression 应该足以满足我的需求。

【问题讨论】:

    标签: cron quartz-scheduler dayofweek


    【解决方案1】:

    试试这个网站https://crontab.guru/它可能对你有帮助..

    http://www.corntab.com/?c=0_12___1,4,5

    对于你的问题,这就是那个表达

    0 12 * * 1,4,5
    

    为了您的理解:

      +---------------- minute (0 - 59)
      |  +------------- hour (0 - 23)
      |  |  +---------- day of month (1 - 31)
      |  |  |  +------- month (1 - 12)
      |  |  |  |  +---- day of week (0 - 7) (Sunday=0 or 7)
      |  |  |  |  |
      0  12 *  * 1,4,5  command to be executed
    

    输出:

    “At 12:00 on Monday, Thursday, and Friday.”
    next at 2016-12-15 12:00:00
    then at 2016-12-16 12:00:00
    then at 2016-12-19 12:00:00
    then at 2016-12-22 12:00:00
    then at 2016-12-23 12:00:00
    .....
    

    【讨论】:

    • 不,先生,实际上您提供的表达式仅告诉我们将作业安排在 1、4、5 天。我希望它应该每 4 天重复一次这个周期。
    • @user2118745 亲爱的。它在每周一、周四、周五 12:00 运行。我刚刚给出了以逗号分隔的工作日列表(1,4,5)。这种情况每周都会重复。
    • @user2118745 如果您还有任何疑问,我可以尝试澄清一下。如果它有助于解决问题,请接受答案。
    • 对,先生,现在如果我想实现它应该从今天开始每两周的周一、周四和周五运行一次。那么如何实现呢?
    • @user2118745 这并不容易。对于每周,我们可以使用 list(0-7) 中的周值。你问一些奇怪的东西,可以使用 list(1-31) 中的月份值进行编辑,但那些工作日不会那么容易。你需要自己调整。
    【解决方案2】:

    据我了解,你需要这样一个查询:

    0 0 12 1-7,14-21 * MON,THU,FRI *
    

    这意味着,您将在每月的第一天到第七天,从每月的十四到二十一天运行您的程序,但前提是一周中的某一天是星期一、星期四或星期五。

    所以下一次发生的时间是:

    2016-12-19T12:00:00+01:00
    2017-01-02T12:00:00+01:00
    2017-01-05T12:00:00+01:00
    2017-01-06T12:00:00+01:00
    ....
    

    另一个问题是,如果评估者能正确处理这样的查询,你必须检查它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 2021-12-16
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多