cron表达式中* 和?有什么区别

今天记录一个比较容易忘的小知识

cron表达式:* * * * * * 中间有空格分开 代表的含义为: 秒 分 小时 月份中的日期 月份 星期中的日期 年份(一般年份不写,默认每年执行)

字段允许值允许的特殊字符
秒(Seconds)0~59的整数, - * / 四个字符
分(Minutes)0~59的整数, - * / 四个字符
小时(Hours)0~23的整数, - * / 四个字符
日期(DayofMonth)1~31的整数,- * ? / L W C 八个字符
月份(Month)1~12的整数或者 JAN-DEC, - * / 四个字符
星期(DayofWeek)1~7的整数或者 SUN-SAT (1=SUN), - * ? / L C # 八个字符
年(Year)1970~2099, - * / 四个字符

最常用的特殊字符就是 *和?
*是通配符,用在秒表示每秒,分每分以此类推

?:只能用在DayofMonth和DayofWeek两个域,由于指定日期(DayofMonth)和指定星期(DayofWeek)存在冲突,所以当指定了日期(DayofMonth)后(包括每天*),星期(DayofWeek)必须使用问号(?),同理,指定星期(DayofWeek)后,日期(DayofMonth)必须使用问号(?)

  • 表示区间 比如分钟 1-5 从1到5分钟每分钟执行以此

/:表示起始时间开始触发,然后每隔固定时间触发一次。比如分钟 10/30,则意味着10分(小时中的10分)触发一次,40分别触发一次.

?和* 通常搭配使用

每天的九点执行一次:0 0 9 * * ? (指定了日期 * 为月的每天,星期必须为?)

在线Cron表达式生成器 - qqe2

在线Cron表达式生成器 - toolzl