cronExpression

Apr 2, 2020


格式

一个 cron 表达式有 6 个或 7 个由空格分隔的时间元素,按顺序依次为:
【秒】 【分】 【时】 【日】 【月】 【周】 【年】
其中【年】可为空

取值

具体取值如下:

  1. 秒(0~59)
  2. 分(0~59)
  3. 时(0~23)
  4. 日(1~31,要考虑具体的月)
  5. 月(1~12)
  6. 周(1~7 或 SUN,MON,TUE,WED,THU,FRI,SAT)
  7. 年(1970-2099)
序号 说明 是否必填 允许填写的值 允许的通配符
1 0-59 , - * /
2 0-59 , - * /
3 0-23 , - * /
4 1-31 , - * ? / L W
5 1-12 or JAN-DEC , - * /
6 1-7 or SUN-SAT , - * ? / L #
7 empty 或 1970-2099 , - * /

通配符

常用通配符(均以秒举例)

  1. , 特定时刻。比如 0,15,45 代表0秒、15秒、45秒触发
  2. - 指定范围内每。比如 25-45 代表从25秒到45秒每秒触发一次
  3. * 每。代表每秒触发一次
  4. / 格式为:[初始值]/[偏移量],前面的值代表初始值(*等同0),后面的值代表偏移量(隔一段时刻后)
    • 比如 0/20 或者 */20 代表从0秒钟开始,每隔20秒触发1次,即0秒、20秒、40秒各触发1次
    • 比如 5/20 代表从5秒开始,每隔20秒触发一次,即5秒、25秒、45秒各触发1次
    • 比如 10-45/20 代表在[10,45]内每隔20秒触发一次,即10秒、30秒各触发1次

特殊通配符

  1. 日位的 ?:若明确指定【周】触发,则用 ? 表示【日】无意义,以免引起冲突和混乱
  2. 日位的 L:代表本月的最后一天
  3. 日位的 W:代表本月内离当天最近的工作日,不能跨月;
  4. 日位的 LW 连用:代表本月的最后一个工作日
  5. 周位的 ?:若明确指定【日】触发,则用 ? 表示【周】无意义,以免引起冲突和混乱
  6. 周位的 L:代表周的最后一天
  7. 周位的 #:格式为:[星期几]#[第几周],某些场景 # 可忽略
    • 比如 2#2 代表本月第二周的星期一
    • 比如 5#3 代表本月第三周的星期四
    • 比如 6L 代表本月最后一个星期五

ps:总结一下特殊通配符的含义:

  1. ?:当前位无意义
  2. L:最后
  3. W:工作日
  4. #[星期几]#[第几周]

生成工具

附上一个很有意思的生成网站,点击这里