Cron表達式的介紹: cron的表達式是被用來配置CronTrigger實例的。 cron的表達式是字元串,實際上是有七個子表達式,描述個別細節的時間表。 這些子表達式是由空格分開的,分別代表: Seconds Minutes Hours Day-of-Month Month Day-of-Wee ...
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 | , - * / |
“?”字元:表示不確定的值
“,”字元:指定數個值
“-”字元:指定一個值的範圍
“/”字元:指定一個值的增加幅度。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 * * ?
關註公眾號【程式員潤哥】,獲得更多技術知識分享