表达式
Cron 表达式包括下面7个字段并区别顺序:
秒0-59,分0-59,小时0-23,月内日期1-31,月1-12或者JAN-DEC,周内日期1-7或者SUN-SAT,年(可选字段)留空或者1970-2099。
支持的通配符如下:
通配符 | 描述 |
---|---|
斜线(/) | 表示给定值的增加幅度。例如,在秒字段中”5/15”代表从第5秒开始,每15秒一次。 |
问号(?) | 只有在月内日期和周内日期字段中可用。表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入”?”,表示周内日期值无关紧要。注意:无关 Quartz,而是 Spring 集成 Quartz 后,它自己加的一个约束,那就是:日期(1-31)和星期(SUN-SAT)两者,必须有一个是问号(?),系统在启动的时候,Spring会检查表达式,如果不符合它的规则,就会抛异常。所以在使用的时候这个地方一定要注意,而在 Linux 上执行 Cron 是没有这个限制的。 |
字母(L) | 是 last 的缩写,只有在月内日期和周内日期字段中可用。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果”L”单独存在,就等于”7”,否则代表当月内周内日期的最后一个实例。所以”1L”表示安排在当月的最后一个星期日执行。 |
字母(W) | 表示把执行安排在最靠近指定值的工作日。把”1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。 |
井号(#) | 表示为给定月份指定具体的工作日。把”MON#2”放在周内日期字段中,表示把任务安排在第二个星期一。 |
星号(*) | 是通配字符,表示该字段可以接受任何可能的值、表达式。 |
连接符(-) | 表示一个范围。 |
例子
示例 | 描述 |
---|---|
“0 0 08 * * ?” | 每天上午8点触发 |
“0 15 10 ? * *” | 每天上午10:15触发 |
“0 15 10 * * ?” | 每天上午10:15触发 |
“0 15 10 * * ? *” | 每天上午10:15触发 |
“0 15 10 * * ? 2005” | 2005年的每天上午10:15触发 |
“0 * 14 * * ?” | 在每天下午2点到下午2:59期间的每1分钟触发 |
“0 0/5 14 * * ?” | 在每天下午2点到下午2:55期间的每5分钟触发 |
“0 0/5 14,18 * * ?” | 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 |
“0 0-5 14 * * ?” | 在每天下午2点到下午2:05期间的每1分钟触发 |
“0 10,44 14 ? 3 WED” | 每年三月的星期三的下午2:10和2:44触发 |
“0 15 10 ? * MON-FRI” | 周一至周五的上午10:15触发 |
“0 15 10 15 * ?” | 每月15日上午10:15触发 |
“0 15 10 L * ?” | 每月最后一日的上午10:15触发 |
“0 15 10 ? * 6L” | 每月的最后一个星期五上午10:15触发 |
“0 15 10 ? * 6L 2009-2019” | 2009年至2019年的每月的最后一个星期五上午10:15触发 |
“0 15 10 ? * 6#3” | 每月的第三个星期五上午10:15触发 |