5分钟学会Cron表达式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Cron表達(dá)式
?
一、前言
? ? ?? 在開發(fā)中,我們往往需要用到定時任務(wù)(quartz)來實現(xiàn)業(yè)務(wù)需求;
? ? ? ? ?? 往往頭疼的不是邏輯,而是最后的,如何定義Cron表達(dá)式(不難,but容易忘 ^_^)。
? ? ? ? ?? 現(xiàn)總結(jié)如下:
?
二、Cron表達(dá)式定義
?? ? ??
? ? ?? ①、列 舉幾個cron表達(dá)式示例: ? ? ??
? ? ? ? ?? 0 ? 0 ? 0 ? * ? * ? ? ? ? ? ? ? ? 含義:每天0:00執(zhí)行一次定時任務(wù)
? ? ? ? ?? 0 ? 0 ? 0 ? ? ? * ? MON ? ?? 含義:每周周一0:00執(zhí)行一次定時任務(wù)
? ? ? ? ?? 0 ? 0 ? 0 ? 1 ? * ? ? ? ? ? ? ? ? 含義:每月1號0:00執(zhí)行一次定時任務(wù)
? ? ? ? ??
? ? ??②、這 樣就可以確定格式:
? ? ? ? ? ? ? ? 【 秒 分 時 日 月 周 年 】,其中年是可選類型,也就是說他如果在不設(shè)定年分的情況下是每年。
? ? ? ? ? ? ? ? ? ? ? ? ? ?? ↓↓↓↓↓↓↓↓
?
? ? ? ③、格 式定義 ? ? ?
| 字段 | 允許值 | 允許的特殊字符 |
| Seconds?(秒) | 0-59 | ,?-?*?/ |
| Minutes(分) | 0-59 | ,?-?*?/ |
| Hours(時) | 0-23 | ,?-?*?/ |
| Day-of-Month(天) | 1-31 | ,?-?*???/?L?W?C |
| Month(月) | 1-12?或者?JAN-DEC (a) | ,?-?*?/ |
| Day-of-Week(周) | 1-7?或者?SUN-SAT (b) | ,?-?*???/?L?C?# |
| 年(可選字段) | 留空,?1970-2099 | ,?-?*?/ ? |
? ? ? ? ? ? ? ? (a). JAN,FEB,MAR,APR,MAY,JUNE,JULY,AUG,SEP,OCT,NOW,DEC
? ? ? ? ? ? ? ? (b). SUN,MON,TUE,WED,THU,FRI,SAT
?
? ? ?③、特 殊字符定義
?????????????? “*”字符: 通配符,指定所有的值;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 0 * * * * ?? 表示每分鐘執(zhí)行一次
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 0 * * ? * *? 表示每分鐘的00秒執(zhí)行一次
?
?????????????? “?”字符: 只在日期域和星期域中使用,指定"非明確的值";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 0 10 18 15 3 ? ? ?? 表示每年三月的第15天,下午6點10分都執(zhí)行一次
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 0 10 18 ? 3 WEB? 表示每年3月的每個星期三,下午6點10分都執(zhí)行一次
?
?????????????? “,”字符:? 表示列出枚舉值;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 10,20 ?* ?* ? * * ?? 表示每分鐘的第10秒與第20秒都執(zhí)行一次
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 0 10,20 * 1,2 * ?? 表示每月的第1天與第2天的,每小時的第
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 10分鐘與第20分鐘都執(zhí)行一次
?
?????????????? “-”字符:? 指定一個范圍;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 0 10 18 1-5 * ?? 表示每月的1號到5號(包含1/5號,每月共計5天),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 下午6點10分都執(zhí)行一次
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 0 10-15 * ? * *? 表示每小時的第10分鐘到第15分鐘(包含10/15分鐘,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 每小時共計5分鐘)都執(zhí)行一次
?
?????????????? “/”字符:? 指定一個值的增加幅度。n/m表示從n開始,每次增加m;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 5/20 * * ? * *? 表示每分鐘的第5秒,第25秒,第45秒都執(zhí)行一次
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: 0 * 2/2 ? * ?*? 表示每天的第2/4/6/8.../22小時的0分0秒都執(zhí)行一次
?
?????????????? “L”字符:? 只在日期域和星期域中使用,用在日表示一個月中的最后一天,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用在周表示該月最后一個星期X;
?
?????????????? “W”字符:只在日期域出現(xiàn),指定離給定日期最近的工作日(周一到周五),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? “L”和“W”可以在日期域中聯(lián)合使用,LW表示這個月最后一周的工作日;
?
?????????????? “#”字符:? 只在星期域中出現(xiàn),表示該月第幾個周X。6#3表示該月第3個周五;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: * * * ? * 3#4? 表示每月的第4個星期的周2,凌晨都執(zhí)行一次
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? eg: * * * ? * 6#2? 表示每月的第2個星期的周5,凌晨都執(zhí)行一次
?
?????????????? “C”字符: 只在日期域和星期域出現(xiàn),這個字符依靠一個指定的“日歷”。
?
?
三、常用Cron表達(dá)式示例
?
- ???????????????? */5 * * * * ?? :每隔5秒執(zhí)行一次;
- ???????????????? 0 */1 * * * ?? :每隔1分鐘執(zhí)行一次;
- ???????????????? 0 0 23 * * ?? :每天23點執(zhí)行一次;
- ???????????????? 0 0 1 * * ?? :每天凌晨1點執(zhí)行一次;
- ???????????????? 0 0 1 1 * ?? :每月1號凌晨1點執(zhí)行一次;
- ???????????????? 0 0 23 L * ?? :每月最后一天23點執(zhí)行一次;
- ???????????????? 0 0 1 ? * L? :每周星期天凌晨1點實行一次;
- ???????????????? 0 0 2 1 * ? *? :表示在每月的1日的凌晨2點執(zhí)行;
- ???????????????? 0 0 12 * * ?? :每天中午12點執(zhí)行;
- ???????????????? 0 15 10 ? * *? :每天上午10:15執(zhí)行 ;
- ???????????????? 0 15 10 * * ?? :20052005年的每天上午10:15執(zhí)行 ;
- ???????????????? 0 * 14 * * ?? :在每天下午2點到下午2:59期間的每1分鐘執(zhí)行 ;
- ???????????????? 0 0/5 14 * * ?? :在每天下午2點到下午2:55期間的每5分鐘執(zhí)行 ;
- ???????????????? 0 26,29,33 * * * ?? :在26分、29分、33分執(zhí)行一次;
- ? ? ? ? ? ? ? ?? 0 0 0,13,18,21 * * ?? :每天的0點、13點、18點、21點都執(zhí)行一次;
- ???????????????? 0 15 10 ? * MON-FRI? :表示周一到周五每天上午10:15執(zhí)行;
- ???????????????? 0 15 10 ? 6L 2002-2006? :表示2002-2006年的每個月的最后一個星期五上午10:15執(zhí)行;
- ???????????????? 0 0 10,14,16 * * ?? :每天上午10點,下午2點/4點執(zhí)行;
- ???????????????? 0 0/30 9-17 * * ?? :朝九晚五工作時間內(nèi)每半小時執(zhí)行;
- ???????????????? 0 0 12 ? * WED? :表示每個星期三中午12點執(zhí)行;
- ???????????????? 0 0/5 14,18 * * ?? :在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘執(zhí)行 ;
- ???????????????? 0 0-5 14 * * ?? :在每天下午2點到下午2:05期間的每1分鐘執(zhí)行 ;
- ???????????????? 0 10,44 14 ? 3 WED? :每年三月的星期三的下午2:10和2:44執(zhí)行 ;
- ???????????????? 0 15 10 ? * MON-FRI? :周一至周五的上午10:15執(zhí)行 ;
- ???????????????? 0 15 10 15 * ?? :每月15日上午10:15執(zhí)行 ;
- ???????????????? 0 15 10 L * ?? :每月最后一日的上午10:15執(zhí)行 ;
- ???????????????? 0 15 10 ? * 6L? :每月的最后一個星期五上午10:15執(zhí)行 ;
- ???????????????? 0 15 10 ? * 6L 2002-2005? :2002年至2005年的每月的最后一個星期五上午10:15執(zhí)行 ;
- ???????????????? 0 15 10 ? * 6#3? :每月的第三個星期五上午10:15執(zhí)行 ;
?
四、友情鏈接
? ? ?? 在 線自動生成Cron表達(dá)式網(wǎng)址:
? ? ? ? ?? http://cron.qqe2.com/
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?? Now ~ ~ ~寫到這里,就寫完了,如果有幸?guī)椭侥?#xff0c;請記得關(guān)注我,共同一起見證我們的成長。
?
小結(jié)
謝謝觀賞,我叫猿醫(yī)生。
猿友推薦:正在奔跑的程序猿
總結(jié)
以上是生活随笔為你收集整理的5分钟学会Cron表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 油气田勘探数字化转型现状及展望
- 下一篇: 查看qq空间说说及评论,设置相关表结构