前言:接觸過(guò) Linux 的朋友對(duì)Cron表達(dá)式應(yīng)該不會(huì)陌生,在 Linux 操作系統(tǒng)下要寫個(gè)自動(dòng)化腳本就會(huì)用到這個(gè)表達(dá)式。
Spring 實(shí)現(xiàn)定時(shí)服務(wù)或計(jì)劃任務(wù)的時(shí)候也需要用到 Quartz 的 Cron表達(dá)式 ,因此在做 Spring計(jì)劃任務(wù)之前,需要掌握一些Cron的知識(shí)。
Quartz官方下載地址:http://quartz-scheduler.org/downloads/catalog?activated=true
我下載使用的是 2.0.2 版本,本篇文章參考的是官網(wǎng)幫助文檔的 Cron表達(dá)式 ,英文在線幫助文檔的,有興趣的可以前往:
Cron expressions:http://quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger
下面是官方對(duì) Cron表達(dá)式的說(shuō)明:

摘要:A cron expression is a string comprised of 6 or 7 fields separated by white space.
一個(gè) Cron表達(dá)式是由6或7個(gè)字段(年字段是可選字段)的字符串組成,字段與字段之間用空格來(lái)隔開。
上面的表格已經(jīng)詳細(xì)的列出了每個(gè)字段能使用的匹配符和每個(gè)字段的有效取值范圍,看一下就很明白了,這里就不再列出。
Cron表達(dá)式使用格式:


文檔上對(duì)每個(gè)符號(hào)代表的什么含義都解釋的很清楚了,下面來(lái)整理一下







觸發(fā)器將觸發(fā)16日周一。如果15日不是周六或周日,而是周一至周五的某一個(gè),那么它就在15日當(dāng)天觸發(fā)事件

官方文檔給出的例子及解釋:







"0 0/5 14,18 * * ?" 每天14點(diǎn)開始到14:59期間和18點(diǎn)到18:59期間的每5分鐘觸發(fā)一次事件
"0 0-5 14 * * ?" 每天14點(diǎn)到14:05期間的每1分鐘觸發(fā)一次事件
"0 10,44 14 ? 3 WED" 每年3月的星期三的14:10和14: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ā)一次事件