我正在尝试提出一个CRON表达式,它允许我在一个月内的每个星期一运行一个石英触发器,第一个除外。
参考文献:
CRON允许您轻松指定一周中某天的第n次出现。这个月的第一个星期一的表达式是:
0 5 0 ? * 2#1
其中2#1表示一个月的第一个星期一(2=一周中的一天,1是第n次出现)
然而,如果我尝试做类似的事情
0 5 0 ? * 2#2-2#5
或
0 5 0 ? * 2#2,2#3,2#4,2#5
它抱怨信息
Support for specifying multiple "nth" days is not implemented.
有人知道如何在CRON中实现这一点吗?
如果cron
没有给你想要的表达能力(a),将命令本身更改为仅在特定条件下执行是很简单的事情。
对于您的特殊情况,您知道一个月的第一个星期一介于第一个和第七个星期一之间,随后的星期一必须在第八个或更晚。
因此,使用cron
选择所有周一,但稍微修改命令以排除当月的第一个周一:
# mm hh dom mon dow command
0 1 * * 1 [[ $(date +%u) -gt 7 ]] && doSomething
该作业将在每周一凌晨1点运行,但实际有效负载doSomething
仅在月日大于7时执行。
有些人经常选择将测试放入脚本本身(假设它甚至是一个脚本),但我不太喜欢这样,更喜欢将所有调度信息保留在crontab
文件本身中。
(a)不要误以为你可以将一周中的某一天1
和一个月中的某一天8-31
结合起来来完成这项工作。根据手册页,这些条件为或(表示允许作业运行):
当分钟、小时和月份字段与当前时间匹配,并且两天字段(月日或星期日)中至少有一个与当前时间匹配时,cron
执行命令
将这两项工作结合起来,将在第一个星期一以及从第八个星期一开始的每一天执行这项工作。
问题内容: 我想获取特定月份/年份中第一个星期一的日期。 我有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道本月的第一个星期一,最好是一个int或Integer值。 例如: 我有2014年和1月(1月),这个月的第一个星期一是6号,所以我想返回6。 问题: 我以为可以做到这一点,但是在设置日历(仅提供年和月)时已经遇到了麻烦。此外,我不确定如何使用返回实际的月
我想知道特定月份/年份的第一个星期一的日期。 我所拥有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道这个月的第一个星期一,最好是整数或整数值。 例如: 我有2014年和1月,这个月的第一个星期一是6号,所以我想返回6号。 问题: 我原以为我可以用做到这一点,但我在设置日历时遇到了问题,因为只有年份和月份可用。此外,我不知道如何使用返回月份/年份的第一个星期一。
我使用石英调度和Spring Batch,我需要在每个月的最后一个星期四运行一个特定的工作。 有可能创建这样的Quartz cron表达式吗? 谢谢
问题内容: python是否提供一种轻松获取 每月 当前星期(1:4)的方法? 问题答案: 为了使用直接除法,您需要根据当月第一天的位置(星期内)来调整您要查看的日期的星期几。因此,如果您的月份恰好在星期一(一周的第一天)开始,则可以按照上面的建议进行除法。但是,如果该月从星期三开始,则需要加2,然后进行除法。这些都封装在下面的函数中。
问题内容: 我正在尝试编写这样的日历功能 是整数(1、2、3 …),$ day是一天(Sun,Mon,…)或数字,以较容易的一个为准。方向有些混乱,因为它进行了不同的计算。 举个例子 它使用默认值,并获得5月的第一个星期日,即2009-05-03。如果我们打电话 ,它将返回5月的第二个最后一个星期日,即2009-05-24。 问题答案: 也许可以使其更快。。。 代码非常有趣。 请注意,前进1表示反
我试图弄清楚如何确定特定的星期一是给定月份的第一个、第二个、第三个还是第四个星期一。我已经弄清楚了如何使用LocalDate类获取下一个星期一和月中的一周。 在上面的例子中,代码获取下一个星期一及其所在的星期。星期是二月的第二周,但那个星期一不是第二个星期一,而是第一个星期一。如果您有任何帮助,我们将不胜感激。