我探索并发现在石英 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
就可以满足我的需求。
尝试这个网站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 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
....
另一个问题是,如果评估者能够正确处理这样的查询,你必须检查它。