cron表示式的格式由7部分構成,各個部分之間用空格隔開,其中第7個部分為可選部分。格式如下:
各個部分表示的意義如下:
第一部分:秒(0~59)
第二部分:分(0~59)
第三部分:小時(0~23)
第四部分:月中的日期(1~31)
第五部分:月份(1~12或jan~dec)
第六部分:每週的週幾(1~7或sun~sat)
第七部分:年份(1970~2099)【可選】
每個部分所能使用的所有符號如下:
*:匹配該域的任意值;如*用在分所在的域,表示每分鐘都會觸發事件;
?:匹配該域的任意值;
-:匹配乙個特定的範圍值;如時所在的域的值是10-12,表示10、11、12點的時候會觸發事件;
,:匹配多個指定的值;如周所在的域的值是2,4,6,表示在周
一、週三、周五就會觸發事件(1表示週日,2表示周一,3表示周二,以此類推,7表示週六);
/:左邊是開始觸發時間,右邊是間隔的時間;如秒所在的域的值是5/15,表示5秒、20秒(隔15秒)、35秒(隔15秒)、50秒(隔15秒)時都觸發一次事件;
l:最後(last),表示該域的最後乙個值;如果是用在天這個域,表示月的最後一天;如果是用在周所在的域,如6l,表示某個月最後乙個周五。
w:工作日(weekday);如天所在的域的值是15w,表示本月15日最近的工作日;如果15日是週六,觸發器將觸發上14日周五;如果15日是週日,觸發器將觸發16日周一;如果15日不是週六或週日,而是周一至周五的某乙個,那麼它就在15日當天觸發事件;
#:用來指定每個月的第幾個星期幾;如6#3表示某個月的第三個星期五;
【* 與 ? 的區別】
* 可以用在所有的部分中;
? 只能用在第四部分(月中的日期)與第六部分(每週的週幾)這兩個部分中。
因為 第四部分(月中的日期)與第六部分(每週的週幾)這兩個域的值是互斥的,因此需要通過設定乙個問號(?)來表明不想設定的那個字段。
例如:設定每月的20日觸發排程,不管20日到底是星期幾,則只能使用如下寫法:
1 1 1 20 * ?
其中最後一位只能用?,而不能使用*,如果使用*表示不管星期幾都會觸發,實際上並不是這樣!!!
實用的cron表示式例子:
cron表示式
表示的含義
0 0 12 * * ?
每天12:00觸發事件
0 15 10 ? * *
每天10:15觸發事件
0 15 10 * * ?
每天10:15觸發事件
0 15 10 * * ? *
每天10:15觸發事件
0 15 10 * * ? 2005
2023年的每天10:15觸發事件
0 * 14 * * ?
每天14點開始觸發,每分鐘觸發一次,14:59分結束
0 0/5 14 * * ?
每天14點開始觸發到14:59分結束的每5分鐘觸發一次事件
0 0/5 14,18 * * ?
每天14點開始到14:59期間和18點到18:59期間的每5分鐘觸發一次事件
0 0-5 14 * * ?
每天14點到14:05期間的每1分鐘觸發一次事件
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
2023年至2023年的每月的最後乙個星期五10:15觸發一次事件
0 15 10 ? * 6#3
每月的第三個星期五10:15觸發一次事件
cron表示式語法
在工作中可能會遇到定時任務的情況,或者是自定義時間範圍,通常會使用cron表示式,現介紹cron表示式的語法。cron表示式包括五個字段,由空格分隔。從左到右,五個cron欄位有不同的意義 分鐘 0 59 小時 0 23 日期 1 31 月份 1 12 週幾 0 6 0表示週日 用法 格式 描述含義...
Cron表示式的簡單語法
六位或者七位的表示式,用空格隔開 對應順序為 秒 分 時 日 月 星期 年 可選 秒 0 59 分 0 59 時 0 23 日 1 31 月 1 12 星期 1 7 年 可選 空值或者1970 2099 符號 對應每乙個時刻 只能在日期和星期欄位中使用,無意義的佔位符 表示乙個範圍 10 11表示1...
cron表示式的語法規則
cron表示式的語法規則 十分鐘你就能寫轉殖表示式 同 unix cron 一樣,quartz cron 表示式支援用特殊字元來建立更為複雜的執行計畫。然而,quartz 在特殊字元的支援上比標準 unix cron 表示式更豐富了。使用星號 指示著你想在這個域上包含所有合法的值。例如,在月份域上使...