Java Cron中问号的重要性

时间:2012-07-16 07:20:26

标签: java cron crontab

来源维基百科:

  使用

问号(?)代替“*”,以便将日期或星期几留空。

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

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

有点混乱,因为Java crons以秒开始,而其他crons以分钟开头。

3 个答案:

答案 0 :(得分:86)

根据Quartz CronTrigger tutorial(上面引用的www.cronmaker.com使用的Quartz),?通配符仅用于月中某一天和星期几字段:

  

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

我认为*在这里不适合,因为*表示在一周中的每一天都执行,这与规则相反,它应该只在该月的10日运行。

答案 1 :(得分:-3)

我知道这是一个古老的问题,但对于子孙后代,这里有解释:http://www.nncron.ru/help/EN/working/cron-format.htm#STARTTIME

  

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

     

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

     

时间:? ? * * * *任务将在nnCron启动时执行,然后执行   将每天同时执行(除非用户没有   当然重启nnCron):问号将被“替换”   nnCron启动时间。例如,如果nnCron在8:25启动,   问号将以这种方式取代:

     

时间:25 8 * * * *

答案 2 :(得分:-13)

我不是Cron专家

但根据www.cronmaker.com,它每天执行。