一个cron表达式由6或7个时间元素组成。它们之间用空格分隔,依次为:[秒] [分] [小时] [日] [月] [星期] [年]
序号 | 说明 | 是否必填 | 允许填写的值 | 允许的符号 |
---|---|---|---|---|
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 | 年 | 否 | 1970-2099 | , - * / |
其中每个元素值可以是一个确定值(6),一个连续区间(9-12),一个间隔时间(0/5),一个列表(1,3,5)或通配符。
“-”表示可选值范围,如在“小时”上设置“10-12”,表示10点、11点和12点触发。
“,”表示可选的多个值,例如在“星期”上设置“MON,WED,FRI”,表示周一,周三和周五触发。
“/”用于递增触发,如在“秒”上面设置“5/15”表示从第5秒开始,每15秒触发一次(5,20,35,50);在“日”上设置“1/3”表示每月1号开始,每三天触发一次。
*表示所有值. 如在“分”上设置“*”,表示每分钟触发。
“?”字符仅出现在“日”和“星期”两个元素上,表示不指定值。当这两个元素之一被指定了值以后,为了避免冲突,需要将另一个元素的值设为“?”
“月”和“星期”元素上若使用英文字母是不区分大小写的,即MON与mon相同
“L” 字符仅出现在“日”和“星期”两个元素上,它是单词“last”的缩写。
“L”在“日”元素上出现,表示每个月的最后一天;在“星期”元素上出现,表示每个月最后一个星期六。
如果在“L”前有具体的内容,它就具有其他的含义了。例如:“6L”在“日”上出现,表示每月的倒数第6天;“5L”在“星期”上出现,表示每月的最后一个星期四
注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
W表示离指定日期的最近那个工作日(周一至周五).
例如在日字段上设置“15W”,表示离每月15号最近的那个工作日触发。
如果15号正好是周六,则找最近的周五(14号)触发;如果15号是周未,则找最近的下周一(16号)触发;如果15号正好在工作日(周一至周五),则就在该天触发。
如果指定格式为“1W”,它则表示每月1号往后最近的工作日触发。
如果1号正是周六,则将在3号下周一触发。(注,“W”前只能设置具体的数字,不允许区间“-”).
小提示:“L”和 “W”可以一组合使用。如果在“日”上设置“LW”,则表示在本月的最后一个工作日触发;
常用示例:
0 0 12 * * ? 每天12点触发
0 15 10 ? * * 每天10点15分触发
0 15 10 * * ? 每天10点15分触发
0 15 10 * * ? * 每天10点15分触发
0 15 10 * * ? 2005 2005年每天10点15分触发
0 * 14 * * ? 每天14点到14点59分之间,每分钟触发一次
0 0/5 14 * * ? 每天14点到14点59分之间,每5分钟触发一次(从14点开始触发)
0 0/5 14,18 * * ? 每天14点到14点59分及18点到18点59分,每5分钟触发一次(分别从14点、18点开始触发)
0 0-5 14 * * ? 每天14点到14点05分之间,每分钟触发
0 10,44 14 ? 3 WED 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 ? * 6L 每月最后一个周五的10点15分触发
0 15 10 ? * 6L 2002-2005 从2002年到2005年每月一个周五的10点15分触发
0 15 10 ? * 6#3 每月第三个周五的10点15分触发
0 0 12 1/5 * ? 每月1号的12点开始触发,每隔5天触发一次