编辑
在这种情况下,以下分析并不适用。这只是一个基于原始误解事实的假设。如果被告知,我可以删除答案。
结尾
我希望我能回答我在评论中提出的问题。
“除了早上 7 点,它在什么时候触发? ”
是早上 7 点、下午 2 点和晚上 9 点吗?
原因:
突出重要的措辞:-
" '/' 字符用于指定增量。例如,秒字段中的“0/15”表示“秒 0、15、30 和 45”。而秒字段中的“5/15”表示“秒”秒 5、20、35 和 50"。在 '/' 之前指定 '*' 相当于指定 0 是开头的值。本质上,对于表达式中的每个字段,都有一组数字可以打开或关闭。对于秒和分钟,数字范围从 0 到 59。对于小时 0 到 23,对于一个月中的几天,从 0 到 31,对于月份 1 到 12 。“/”字符只是帮助您打开给定集合中的每个“nth”值。因此,月份字段中的“7/6”仅打开月份“7”,这并不意味着每 6 个月,请注意微妙之处。"
在您的情况下,cron 表达式:"0 0 7 * * ?"
导致在 24 小时(一天)内每 7 小时运行一次作业,导致在上午 7 点、(7 + 7) 下午 2 点、(7 + 7 + 7) 晚上 9 点运行。
这个最新的文档quartz-scheduler.org
另有说明。看看这里的例子。还要研究“特殊字符/”。
根据我对seconds
和minutes
[我不想等待 24 小时来测试 :)] 的测试,我强烈认为以下cronExpression
内容将有效并每天触发execute()
at :7:00 Hrs
回答:
"0 0 7/23 * * ?"
[从当天的第 7 小时第 0 分钟和第 0 秒开始,每 24 小时运行一次作业]
"0 0 0/23,7 * * ?"
[与回答 1 同义,但不那么冗长。]
让你知道你的测试结果。我坚信这会奏效。我还将为白天/晚上设置调度程序,以便在 24 小时后测试结果(我不想篡改 JVM 时钟以获得清晰的结果,尽管我成功测试了相同的篡改。) . 将发布我的实际测试结果。