72

来源维基百科:

使用问号(?) 代替“*”将日期或星期几留空。

上面的陈述对我来说没有多大意义。

因此,如果我写一些 cron,0 0 0 ? * *那么这意味着每个月的第一天还是意味着它将每天执行?

这有点令人困惑,因为 Java crons 以秒开头,而其他 crons 以分钟开头。

4

2 回答 2

130

根据Quartz CronTrigger 教程(Quartz 被 www.cronmaker.com 使用,上面引用过),?通配符只用在 day of month 和 day of week 字段中:

? (“无特定值”) - 当您需要在允许该字符的两个字段之一中指定某些内容时很有用,但另一个字段中不允许。例如,如果我希望触发器在一个月中的特定日期(例如,10 号)触发,但不关心恰好是一周中的哪一天,我会在 day-of 中输入“10” -month 字段和“?” 在星期几字段中。

我想*这里不合适,因为*意味着在一周中的每一天执行,这与它应该只在每月 10 日运行的规则相矛盾。

于 2014-05-02T15:37:54.537 回答
-3

我知道这是一个老问题,但为了后代,这里解释了:http ://www.nncron.ru/help/EN/working/cron-format.htm#STARTTIME

在经典模式和扩展模式下,nnCron 用户都可以使用“非标准”字符“?” 在 cron 格式的前四个字段中。它代表nnCron启动的时间,即当一个字段被处理时,启动时间将代替问号:分钟字段为分钟,小时字段为小时,月份字段为月份,月份字段为月份。

例如,如果您编写以下内容:

时间: ?? * * * * 任务将在 nnCron 启动时执行,然后每天同时执行(当然,除非用户不重新启动 nnCron):问号将被 nnCron 启动时间“替换”。例如,如果 nnCron 是在 8:25 开始的,那么问号将被这样替换:

时间:25 8 * * * *

于 2013-09-23T14:37:45.827 回答