CronExpression表达式语法总结

来源:互联网 发布:淘宝旺旺上怎么发邮箱 编辑:程序博客网 时间:2024/05/22 17:00

一个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天触发一次

3 1