在 cron 表达式中使用月份和星期几

问题描述 投票:0回答:2

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

sec min hour day_of_month month day_of_week year, 

我们可以提供

day_of_month
day_of_week
,但不能同时提供两者,因为它尚未实施。

我想在每个

two weeks
之后以及周一、周四、周五中午 12 点运行调度程序,那么我怎样才能实现这一目标。

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

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

因为我们无法同时提供

day_of_week and day_of_month

因此,请让我知道是否存在其他方法、其他库等。我不想在业务逻辑中处理它,而只是简单地使用

cronexpression
就可以满足我的需求。

cron quartz-scheduler dayofweek
2个回答
0
投票

尝试这个网站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
.....

0
投票

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

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
....

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

© www.soinside.com 2019 - 2024. All rights reserved.