CronTrigger教程

这篇文章翻译自Quartz官方文档。

介绍

Cron是一个存在了很长时间的UNIX工具,它的调度功能很强大而且经过了验证。CronTrigger类基于cron的调度功能。 CronTrigger使用“cron表达式”,它能够创建类似这样的触发策略:“每周一至周五上午8:00”或“每月最后一个星期五凌晨1:30” Cron表达式很强大,但(规则)可能令人很困惑。 本教程旨在揭示撰写Cron表达式的一些谜团,为用户提供在论坛或邮件列表咨询之前可以访问的资源。

格式

Cron表达式是由空格分隔的6或7个字段组成的字符串。 字段可以包含任何允许的值,以及该字段允许的特殊字符的各种组合。 字段如下:

字段 是否必须 允许值 允许特殊字符
Seconds 0-59 , - * /
Minutes 0-59 , - * /
Hours 0-23 , - * /
Day of month 1-31 , - * ? / L W
Month 1-12 or JAN-DEC , - * /
Day of week 1-7 or SUN-SAT , - * ? / L #
Year empty, 1970-2099 , - * /

所以cron表达式可以像这样简单:* * * * ? * 或者更复杂一些,像这样:0/5 14,18,3-39,52 * ? JAN,MAR,SEP MON-FRI 2002-2010

特殊字符

‘L’和’W’字符也可以在day-of-month字段中组合以产生’LW’,这转换为“最后一个工作日”

法定字符以及一周中几个月和几天的名称不区分大小写。 MON与mon相同。

例子

这是几个完整的例子:

表达式 含义
0 0 12 * * ? 每天12:00点触发
0 15 10 ? * * 每天10:15触发
0 15 10 * * ? 每天10:15触发
0 15 10 * * ? * 每天10:15触发
0 15 10 * * ? 2005 在2015年,每天上午10:15触发
0 * 14 * * ? 每天,从14:00开始,到14:59结束,每1分钟触发
0 0/5 14 * * ? 每天,从14:00开始,到14:55结束,每5分钟触发
0 0/5 14,18 * * ? 每天,在14:00-14:55,18:00-18:55时间段内,每5分钟触发
0 0-5 14 * * ? 每天,在14:00-14:05,每分钟触发
0 10,44 14 ? 3 WED 每年3月的每个星期3,14:10和14:44触发
0 15 10 ? * MON-FRI 每个星期一到星期五的10:15触发
0 15 10 15 * ? 每月15日,10:15触发
0 15 10 L * ? 每月最后一天,10:15触发
0 15 10 L-2 * ? 每月距最后1天的前2天,10:15触发
0 15 10 ? * 6L 每个月最后一个星期五的10:15触发
0 15 10 ? * 6L 2002-2005 在2002,2004,2004,2005年,每个月最后一个星期五的10:15触发
0 15 10 ? * 6#3 每个月第3个星期五的10:15触发
0 0 12 1/5 * ? 从1日开始,每隔5天的12:00触发
0 11 11 11 11 ? 每个11月的11:11触发

注意’?’ 和’*’ 在day-of-week和day-of-month字段中的用法!

说明