cron表达式

Cron表达式简单来说就是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:

  1. Seconds Minutes Hours DayofMonth Month DayofWeek Year (七个域)
    秒 分钟 小时 月份中的天 月份 星期中的天 年
  2. Seconds Minutes Hours DayofMonth Month DayofWeek(六个域)
  3. 各字段的含义
字段允许值允许的特殊字符
秒(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, - * / 四个字符
  1. ‘*’ 表示 匹配该区域任何值 假如Seconds使用 * 就会在每秒触发
  2. ? 可以用在日期(日)和星期字段 用来指出‘没有特定的值’ 日期和星期字段是互斥的 一个字段设置值之后另一个字段必须表示没有意义 所以就出现了’?’
  3. 也就是说 日期和星期 必须有且仅有 一个是’?’
  4. ‘-’ 表示范围 比如Seconds 2-12 表示在2秒到12秒时间内 每秒触发一次
  5. ‘/’ 表示起始时间开始触发每隔固定事件触发一次 Minutes 5/15 表示第5分钟开始触发第一次 过15分钟也就是 20分钟 35分钟弄50分钟 各触发一次
  6. ‘,’ 表示枚举 比如 Hours 1,5,8 表示在1点 5点 8点 各触发一次
  7. ‘L’表示最后 只能出现在 日期和星期中 如果在星期中是 5L表示在最后一个星期四 触发一次 (1-7 周日-周六)
  8. ‘W’表示有效工作日(周一到周五) 只能出现在日期中 系统将会在指定日期的最近有效工作日触发 例如 使用5W 如果5日是星期日那么将会在6日(星期五)触发 如果5日是星期六 那么将会在4日(星期五)触发 如果5日是星期一到星期五中的某一天 那就在五日触发 W的最近工作日寻找不会跨月
  9. LW 可以连用 表示在某月的最后一天最近的工作日
  10. ‘#’只能在日期中出现 4#2 表示 每个月第四个星期二

常用表达式的例子

  1. 每隔5秒执行一次:*/5 * * * * ?
  2. 每隔5分钟执行一次:0 */5 * * * ?
  3. 每天5点执行一次:0 0 5 * * ?
  4. 每月1号凌晨1点执行一次:0 0 1 1 * ?
  5. 每月最后一天23点执行一次:0 0 23 L * ?
  6. 每周星期天凌晨1点实行一次:0 0 1 ? * L
  7. 在26分、29分、33分执行一次:0 26,29,33 * * * ?
  8. 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
  9. 周一到周五每天上午10:15执行作业 0 15 10 ? * MON-FRI
  10. 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
  11. 表示2002-2006年的每个月的最后一个星期五上午10:15执行
    0 15 10 ? 6L 2002-2006
  12. 朝九晚五工作时间内每半小时 0 0/30 9-17 * * ?
  13. 表示每个星期三中午12点 0 0 12 ? * WED
  14. 在每天下午2点到下午2:59期间的每1分钟触发 0 * 14 * * ?
  15. 在每天下午2点到下午2:55期间的每5分钟触发 0 0/5 14 * * ?
  16. 每个月3号 凌晨3点 执行一次 0 0 3 3 * ?