Skip to content

quartz cron desc

qifeng dai edited this page Mar 7, 2017 · 3 revisions

具体的语法,可以参考:http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-06.html, 这里做一个简单的说明。

1.表达式说明

Quartz 表达式由 6 个部分组成,为:分别为 SecondsMinutesHoursDay-of-MonthMonthDay-of-WeekYear (optional field),比如:

0 0 12 ? * WED

单个的子表达式可以包含范围或者是列表,比如周字段,可以是 MON-FRI, MON,WED,FRI, 或是 MON-WED,SAT

对于 * 表示的是任意的可能值,比如在 Month 这个位置,表示的是每个月,在 Day-of-Week 这个位置表示的是周的每一天。

每个字段的可选值如下:

  1. Seconds:[0, 59]
  2. Minutes:[0, 59]
  3. Hours:[0, 23]
  4. Day-of-Month:[1, 31]
  5. Month:[0, 11] 或者是 JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
  6. Day-of-Week:[1, 7], 1 = Sunday, 顺序是 SUN, MON, TUE, WED, THU, FRI, SAT

还有一个字符 / 是比较特殊的,表示增量的规则,比如 0/15 在分钟字段表示每 15 分钟,从 0 分开始,3/20 表示每 20 分钟,从第 3 分钟开始,和 3, 23, 43 是等价的。需要注意的是 /35 不是表示每 35 分钟,是在小时内的每 35 分钟,等价于 0, 35

还有一个需要注意的是 ?,这个字符只允许出在 Day-of-MonthDay-of-Week 的位置,在只需要设置其中一个字段的时候是有效的。如果某个字段设置了 ?,实则表示是没有设置具体的值。而不是像 * 一样表示的是任意的可能值。

2.示例

  1. 0 0/5 * * * ? 表示每 5 分钟激活。
  2. 10 0/5 * * * ? 表示每 5 分钟,且是在每分钟的第 10 秒激活,比如 10:00:10 am, 10:05:10 am 等。
  3. 0 30 10-13 ? * WED,FRI 表示在每周的 WED,FRI 的 10 点到 13 点的 30 分钟 0 秒激活,比如 10:30, 11:30, 12:30, 13:30
  4. 0 0/30 8-9 5,20 * ? 表示每月的 5 号,10 号,在早上 8~9 点,每 30 分钟的 0 点激活,比如 8:00, 8:30, 9:00, 9:30