在cron表达中使用月中的一天和星期几

时间:2016-12-12 11:03:01

标签: cron quartz-scheduler dayofweek

我探索并发现石英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就足以满足我的需求。 / p>

2 个答案:

答案 0 :(得分: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
.....

答案 1 :(得分: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
....

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