關(guān)于cronExpression表達(dá)式,這里講解一下:
字段?允許值?允許的特殊字符
秒0-59,?-?*?/
分0-59,?-?*?/
小時(shí)0-23,?-?*?/
日期1-31,?-?*???/?L?W?C
月份1-12或者?JAN-DEC?,?-?*?/
星期1-7或者?SUN-SAT?,?-?*???/?L?C?#
年(可選)?留空,1970-2099,?-?*?/
表達(dá)式意義
"0?0?12?*?*??"每天中午12點(diǎn)觸發(fā)
"0?15?10???*?*"每天上午10:15觸發(fā)
"0?15?10?*?*??"每天上午10:15觸發(fā)
"0?15?10?*?*???*"每天上午10:15觸發(fā)
"0?15?10?*?*???2005"2005年的每天上午10:15觸發(fā)
"0?*?14?*?*??"在每天下午2點(diǎn)到下午2:59期間的每1分鐘觸發(fā)
"0?0/5?14?*?*??"在每天下午2點(diǎn)到下午2:55期間的每5分鐘觸發(fā)
"0?0/5?14,18?*?*??"在每天下午2點(diǎn)到2:55期間和下午6點(diǎn)到6:55期間的每5分鐘觸發(fā)
"0?0-5?14?*?*??"在每天下午2點(diǎn)到下午2:05期間的每1分鐘觸發(fā)
"0?10,44?14???3?WED"每年三月的星期三的下午2:10和2:44觸發(fā)
"0?15?10???*?MON-FRI"周一至周五的上午10:15觸發(fā)
"0?15?10?15?*??"每月15日上午10:15觸發(fā)
"0?15?10?L?*??"每月最后一日的上午10:15觸發(fā)
"0?15?10???*?6L"每月的最后一個(gè)星期五上午10:15觸發(fā)
"0?15?10???*?6L?2002-2005"2002年至2005年的每月的最后一個(gè)星期五上午10:15觸發(fā)
"0?15?10???*?6#3"每月的第三個(gè)星期五上午10:15觸發(fā)
每天早上6點(diǎn)
06*?*?*
每?jī)蓚€(gè)小時(shí)
0*/2*?*?*
晚上11點(diǎn)到早上8點(diǎn)之間每?jī)蓚€(gè)小時(shí),早上八點(diǎn)
023-7/2,8*?*?*
每個(gè)月的4號(hào)和每個(gè)禮拜的禮拜一到禮拜三的早上11點(diǎn)
0114*1-3
1月1日早上4點(diǎn)
0411*
"0/5?*?*?*?*??"5秒啟動(dòng)一次
最后別忘了在web.xml里面配置Spring:
1、? CronTrigger時(shí)間格式配置說明
CronTrigger配置格式:
格式: [秒] [分] [小時(shí)] [日] [月] [周] [年]
序號(hào)
說明
是否必填
允許填寫的值
允許的通配符
1
秒
是
0-59
, - * /
2
分
是
0-59
, - * /
3
小時(shí)
是
0-23
, - * /
4
日
是
1-31
, - * ? / L W
5
月
是
1-12 or JAN-DEC
, - * /
6
周
是
1-7 or SUN-SAT
, - * ? / L #
7
年
否
empty?或?1970-2099
, - * /
通配符說明:
*:表示所有值.?例如:在分的字段上設(shè)置?"*",表示每一分鐘都會(huì)觸發(fā)。
?:表示不指定值。使用的場(chǎng)景為不需要關(guān)心當(dāng)前設(shè)置這個(gè)字段的值。例如:要在每月的10號(hào)觸發(fā)一個(gè)操作,但不關(guān)心是周幾,所以需要周位置的那個(gè)字段設(shè)置為"?"?具體設(shè)置為?0 0 0 10?*??
-:表示區(qū)間。例如 在小時(shí)上設(shè)置?"10-12",表示?10,11,12點(diǎn)都會(huì)觸發(fā)。
,:表示指定多個(gè)值,例如在周字段上設(shè)置?"MON,WED,FRI"?表示周一,周三和周五觸發(fā)
/:用于遞增觸發(fā)。如在秒上面設(shè)置"5/15"?表示從5秒開始,每增15秒觸發(fā)(5,20,35,50)。 在月字段上設(shè)置'1/3'所示每月1號(hào)開始,每隔三天觸發(fā)一次。
L:表示最后的意思。在日字段設(shè)置上,表示當(dāng)月的最后一天(依據(jù)當(dāng)前月份,如果是二月還會(huì)依據(jù)是否是潤(rùn)年[leap]),?在周字段上表示星期六,相當(dāng)于"7"或"SAT"。如果在"L"前加上數(shù)字,則表示該數(shù)據(jù)的最后一個(gè)。
例如在周字段上設(shè)置"6L"這樣的格式,則表示“本月最后一個(gè)星期五"
W:表示離指定日期的最近那個(gè)工作日(周一至周五).?例如在日字段上設(shè)置"15W",表示離每月15號(hào)最近的那個(gè)工作日觸發(fā)。如果15號(hào)正好是周六,則找最近的周五(14號(hào))觸發(fā),?如果15號(hào)是周未,則找最近的下周一(16號(hào))觸發(fā).如果15號(hào)正好在工作日(周一至周五),則就在該天觸發(fā)。如果指定格式為?"1W",它則表示每月1號(hào)往后最近的工作日觸發(fā)。如果1號(hào)正是周六,則將在3號(hào)下周一觸發(fā)。(注,"W"前只能設(shè)置具體的數(shù)字,不允許區(qū)間"-").
'L'和?'W'可以一組合使用。如果在日字段上設(shè)置"LW",則表示在本月的最后一個(gè)工作日觸發(fā)
#:序號(hào)(表示每月的第幾周星期幾),例如在周字段上設(shè)置"6#3"表示在每月的第三個(gè)周星期六.注意如果指定"6#5",正好第五周沒有星期六,則不會(huì)觸發(fā)該配置(用在母親節(jié)和父親節(jié)再合適不過了)
周字段的設(shè)置,若使用英文字母是不區(qū)分大小寫的?MON?與mon相同.
常用示例:
格式: [秒] [分] [小時(shí)] [日] [月] [周] [年]
0 0 12 * * ????????????每天12點(diǎn)觸發(fā)
0 15 10 ? * *??????????每天10點(diǎn)15分觸發(fā)
0 15 10 * * ???????????每天10點(diǎn)15分觸發(fā)
0 15 10 * * ? *????????每天10點(diǎn)15分觸發(fā)
0 15 10 * * ? 2005?????2005年每天10點(diǎn)15分觸發(fā)
0 * 14 * * ????????????每天下午的?2點(diǎn)到2點(diǎn)59分每分觸發(fā)
0 0/5 14 * * ??????????每天下午的?2點(diǎn)到2點(diǎn)59分(整點(diǎn)開始,每隔5分觸發(fā))
0 0/5 14,18 * * ?????????每天下午的?18點(diǎn)到18點(diǎn)59分(整點(diǎn)開始,每隔5分觸發(fā))
0 0-5 14 * * ?????????????每天下午的?2點(diǎn)到2點(diǎn)05分每分觸發(fā)
0 10,44 14 ? 3 WED????????3月分每周三下午的?2點(diǎn)10分和2點(diǎn)44分觸發(fā)
0 15 10 ? * MON-FRI???????從周一到周五每天上午的10點(diǎn)15分觸發(fā)
0 15 10 15 * ?????????????每月15號(hào)上午10點(diǎn)15分觸發(fā)
0 15 10 L * ??????????????每月最后一天的10點(diǎn)15分觸發(fā)
0 15 10 ? * 6L????????????每月最后一周的星期五的10點(diǎn)15分觸發(fā)
0 15 10 ? * 6L 2002-2005??從2002年到2005年每月最后一周的星期五的10點(diǎn)15分觸發(fā)
0 15 10 ? * 6#3???????????每月的第三周的星期五開始觸發(fā)
0 0 12 1/5 * ?????????????每月的第一個(gè)中午開始每隔5天觸發(fā)一次
0 11 11 11 11 ????????????每年的11月11號(hào)?11點(diǎn)11分觸發(fā)(光棍節(jié))