一个cron表达式有6个或7个有空格分隔的时间元素。
按顺序依次为:
秒 分 小时 日期 月份 星期
秒 分 小时 日期 月份 星期 年
其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4) (/4表示每隔4小时),一个列表(1,3,5),通配符。由于“月份中的日期”和“星期中的日期”这两个元素互斥的,必须要对其中一个设置”?”。
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
时 0-23 , - * /
日 1-31 , - * / L W ?
月 1-12(JAN-DEC) , - * /
周 1-7(SUN-SAT) , - * / L ? #
年 1970-2099(留空) , - * /
如上面的表达式所示:
“ * ”字符被用来指定所有的值。如:”“在分钟的字段域里表示“每分钟”。
“ - ”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。
“ , ”字符被用来指定另外的值,枚举各值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。
“ ? ”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。
“ / ”字符用来指定数值的增量。如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟;在子表达式(分钟)里的“*/15”表示从程序加载成功的那刻开始,每15分钟;在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”的含义一样)。
“ L ”字符指定在月或者星期中的某天(最后一天)。即“Last
”的缩写。但是在星期和月中“L”表示不同的意思,如:在月子段中“L”指月份的最后一天-1月31日,2月28日,如果在星期字段中则简单的表示为“7”或者“SAT”。如果在星期字段中在某个value值得后面,则表示“某月的最后一个星期value”,如“6L”表示某月的最后一个星期五。“ W ”字符只能用在月份字段中,该字段指定了离指定日期最近的那个星期日。
“ # ”字符只能用在星期字段,该字段指定了第几个星期value在某月中
常用示例:
0 0 10,14,16 * * ? 每天上午10:00,下午2:00,4:00
0 * 10,14,16 * * ? 每天上午10:00到10:59,下午2:00到2:59,4:00到4:59每分钟执行一次
0 0/30 9-17 * * ? 9:00到17:59时间内每半小时(整点开始)
0 0 12 ? * WED 表示每个星期三中午12:00
0 0 12 ? * 4 表示每个星期三中午12:00
0 0 12 * * ? 每天中午12:00触发
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:00到下午2:59期间的每分钟触发
0 0/5 14 * * ? 在每天下午2:00到下午2:59期间的每5分钟触发(最后一次是2:55)
0 0/5 14,18 * * ? 在每天下午2:00到2:55期间和下午6:00到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 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2:00到2:59分、18:00到18:59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2:00到2:05分每分触发
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 * ? 每月的第一个中午开始每隔5天触发一次
0 0 23-7/2,8 * * * 晚上11:00到早上7:59之间每两个小时,还有早上8:00
0 0 11 4 * 1-3 每个月的4号和每个礼拜的周天到周二的早上11:00