java 定時任務 quartz 時間表示式Cron總結

fhadmin發表於2022-05-18

Cron 表示式的介紹:

cron 的表示式是被用來配置 CronTrigger 例項的。

cron 的表示式是字串,實際上是有七個子表示式,描述個別細節的時間表。

這些子表示式是由空格分開的,分別代表:

  • Seconds
  • Minutes
  • Hours
  • Day-of-Month
  • Month
  • Day-of-Week
  • Year (可選欄位)

例如 "0 0 12 ? * WED" 表示在每星期三下午 12:00 執行,個別子表示式可以包含範圍;

例如,在前面的例子裡 "WED" 可以替換為 "MON-FRI","MON,WED,FRI" 甚至 "MON-WED,SAT"。"*" 代表整個時間段。

每一個欄位都有一套可以指定有效值,如

Seconds (秒):可以用數字 0-59 表示

Minutes (分):可以用數字 0-59 表示

Hours (時):可以用數字 0-23 表示

Day-of-Month (天):可以用數字 1-31 中的任意一個值,但要注意一些特別的月份

Month (月):可以用 0-11 或用字串 "JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV and DEC" 表示

Day-of-Week (每週):可以用數字 1-7 表示(1=星期日)或用字串 “SUN,MON,TUE,WED,THU,FRI and SAT" 表示

"*":指定所有的值,比如,Minutes 設定為 *,表示每分鐘

"/":為特別單位,表示為 “每”,例如 "0/15" 表示每隔 15 分鐘執行一次,"0" 表示為從 0 分開始,"3/20" 表示每隔 20 分鐘執行一次,"3" 表示從第 3 分鐘開始執行

"?":表示每月的某一天,或每週的某一天

"L":用於每月或每週,表示為每月的最後一天,或每個月的最後一個星期幾如 "6L" 表示 “每月的最後一個星期五”

"W":表示為最近的工作日,如 "15W" 放在每月(day-of-month)欄位上表示為 “到本月 15 日最近的工作日”

"#":是用來指定每月第 n 個工作日,例如在每週(day-of-week)這個欄位中內容為 "6#3" or "FRI#3" 則表示 “每月第三個星期五”

Cron 表示式的格式:

秒 分 時 日 月 周 年 (可選)

只有日和周可以為 "?",並且日和周不能同時為 "?"、"*";否則會報無效錯誤;

欄位名 允許的值 允許的特殊字元
0-59 , - * /
0-59 , - * /
小時 0-23 , - * /
1-31 , - * ? / L W C
1-12 or JAN-DEC , - * /
周幾 1-7 or SUN-SAT , - * ? / L C #
年 (可選欄位) empty, 1970-2099 , - * /

java 專案 from  fhadmin.cn

“?” 字元:表示不確定的值

“,” 字元:指定數個值

“-” 字元:指定一個值的範圍

“/” 字元:指定一個值的增加幅度。n/m 表示從 n 開始,每次增加 m

“L” 字元:用在日表示一個月中的最後一天,用在周表示該月最後一個星期 X

“W” 字元:指定離給定日期最近的工作日 (週一到週五)

“#” 字元:表示該月第幾個周 X。6#3 表示該月第 3 個週五

Cron 表示式的範例:

每隔 5 秒執行一次:*/5 * * * * ?

每隔 1 分鐘執行一次:0 */1 * * * ?

每天 23 點執行一次:0 0 23 * * ?

每天凌晨 1 點執行一次:0 0 1 * * ?

每月 1 號凌晨 1 點執行一次:0 0 1 1 * ?

每月最後一天 23 點執行一次:0 0 23 L * ?

每週星期天凌晨 1 點實行一次:0 0 1 ? * L

在 26 分、29 分、33 分執行一次:0 26,29,33 * * * ?

每天的 0 點、13 點、18 點、21 點都執行一次:0 0 0,13,18,21 * * ?

每天的 7 點到 21 點都執行一次:0 0 7-21 * * ?


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31558068/viewspace-2894992/,如需轉載,請註明出處,否則將追究法律責任。

相關文章