javacron中问号的意义

javacron中问号的意义,java,cron,crontab,Java,Cron,Crontab,来源维基百科: 使用问号(?)代替“*”,将月日或周日留空 上述说法对我来说没有多大意义 所以如果我写一些cron作为0?**那么它是指每个月的第一天,还是指它将每天执行 这有点令人困惑,因为Java cron以秒开始,而其他cron以分钟开始。我知道这是一个古老的问题,但对于后代来说,这里将对此进行解释: 无论是在经典模式还是扩展模式下,nnCron用户都可以使用 cron格式前四个字段中的“非标准”字符“?”。 它代表nnCron启动的时间,即。E处理字段时, 启动时间将替换为问号:分钟 分

来源维基百科:

使用问号(?)代替“*”,将月日或周日留空

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

所以如果我写一些cron作为
0?**那么它是指每个月的第一天,还是指它将每天执行


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

我知道这是一个古老的问题,但对于后代来说,这里将对此进行解释:

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

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

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

时间:258***

根据(Quartz由www.cronmaker.com使用,如上所述),
通配符仅用于月日和周日字段:

??(“无特定值”)-当您需要在允许字符的两个字段中的一个字段中指定某个内容,而不是在另一个字段中指定某个内容时,此选项非常有用。例如,如果我希望我的触发器在一个月的某一天(比如说,10号)触发,但不管发生在一周中的哪一天,我会在“月日”字段中输入“10”,在“周日”字段中输入“?”


我想
*
在这里是不合适的,因为
*
意味着在一周的每一天执行,这违反了只应在每月10日运行的规则。

nnCron与Java Cron无关,它的含义是什么?这与Java中的含义完全不同。在Spring Boot中,CronExpression.isValidExpression(“0*****”)返回false,CronExpression.isValidExpression(“0*****”)返回true,但在Spring Boot调度任务中,@Scheduled(cron=“0*****”)或@Scheduled(cron=“0****?”)都可以正常工作