例子:0 0 12 ? * WED * 如上,cron表达式字符串以5或6个空格隔开,分为6或7个部分组成,中间由空格分隔,这七部分从左往右依次是 秒 分 时 日 月 星期几 年:
还说这个例子:
0 0 12 ? * WED *
这个例子的意思是 “ 每个星期三的中午12点 ” 。
特殊字符解释(特殊字符都指的是英文字符):
* 表示匹配该域的所有可能的值。假如在Minutes域使用*, 即表示每分钟都会触发事件。
* * * * * ?
表示 “ 每年每月每天每时每分每秒 ” 。
/ 为特别单位,表示为“每”如“0/15”表示每隔15分钟执行一次,“0”表示为从“0”分开始, “3/20”表示表示每隔20分钟执行一次,“3”表示从第3分钟开始执行 即 “ / ” 的左侧是开始值,右侧是间隔。
0/15 * * * * ? 每年每月每天每时每分,每15秒一次,从第0秒开始
- 表示范围。例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
, 表示列出枚举值。例如:在Minutes域使用 5,20,则意味着在5和20分每分钟触发一次。
? 只能用在DayofMonth和DayofWeek两个域,表示不指定值 可以是每月的某一天或第周的某一天 。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日15:13:13触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
L 用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五”
W 表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”
# 是用来指定“的”每月第n个工作日,例 在每周(day-of-week)这个字段中内容为”6#3” or “FRI#3” 则表示“每月第三个星期五”
摘录一些其他文章的cron表达式例子 ( 从左至右 秒 分 时 日 月 星期几 年)
(1) 0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务
(2) 0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
(3) 0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
(4) 0 0 10,14,16 * * ? 表示每天上午10点,下午2点,4点
(5) 0 0/30 9-17 * * ? 9点-17点每半小时
(6) 0 0 12 ? * WED 表示每个星期三中午12点
(7) 0 0 12 * * ? 每天中午12点触发
(8) 0 15 10 ? * * = 0 15 10 * * ? = 0 15 10 * * ? * 每天上午10:15触发
(9) 0 15 10 * * ? 2005 2005年的每天上午10:15触发
(10) 0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
(11) 0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
(12) 0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
(13) 0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
(14) 0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
(15) 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
(16) 0 15 10 15 * ? 每月15日上午10:15触发
(17) 0 15 10 L * ? 每月最后一日的上午10:15触发 (L表示最后一天)
(18) 0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发 (6是星期五 从礼拜天开始算)
(19) 0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
https://blog.csdn.net/lianjunzongsiling/article/details/82228655
https://www.cnblogs.com/javahr/p/8318728.html
https://blog.csdn.net/linzhiqiang0316/article/details/80588313 动态配置quartz !!!