1. 程式人生 > >5分鐘學會Cron表示式

5分鐘學會Cron表示式

                                                       Cron表示式

 

一、前言

       在開發中,我們往往需要用到定時任務(quartz)來實現業務需求;

           往往頭疼的不是邏輯,而是最後的,如何定義Cron表示式(不難,but容易忘 ^_^)。

           總結如下:

 

二、Cron表示式定義

       

       ①、舉幾個cron表示式示例:       

           0   0   0   *   *   ?             含義:每天0:00執行一次定時任務

           0   0   0   ?   *   MON      含義:每週週一0:00執行一次定時任務

           0   0   0   1   *   ?             含義:每月1號0:00執行一次定時任務

          

      ②、樣就可以確定格式:

                【 秒 分 時 日 月 周 年 】,其中年是可選型別,也就是說他如果在不設定年分的情況下是每年。

                             ↓↓↓↓↓↓↓↓

 

      ③、式定義      

欄位

允許值

允許的特殊字元

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 * * * * ?  表示每分鐘執行一次

                               eg: 0 * * ? * *  表示每分鐘的00秒執行一次

 

               “?”字元: 只在日期域和星期域中使用,指定"非明確的值";

                               eg: 0 10 18 15 3 ?      表示每年三月的第15天,下午6點10分都執行一次

                               eg: 0 10 18 ? 3 WEB  表示每年3月的每個星期三,下午6點10分都執行一次

 

               “,”字元:  表示列出列舉值;

                               eg: 10,20  *  * ? * *    表示每分鐘的第10秒與第20秒都執行一次

                               eg: 0 10,20 * 1,2 * ?  表示每月的第1天與第2天的,每小時的第

                                                                 10分鐘與第20分鐘都執行一次

 

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

                               eg: 0 10 18 1-5 * ?  表示每月的1號到5號(包含1/5號,每月共計5天),

                                                              下午6點10分都執行一次

                               eg: 0 10-15 * ? * *  表示每小時的第10分鐘到第15分鐘(包含10/15分鐘,

                                                               每小時共計5分鐘)都執行一次

 

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

                               eg: 5/20 * * ? * *  表示每分鐘的第5秒,第25秒,第45秒都執行一次

                               eg: 0 * 2/2 ? *  *  表示每天的第2/4/6/8.../22小時的0分0秒都執行一次

 

               “L”字元:  只在日期域和星期域中使用,用在日表示一個月中的最後一天,

                                用在周表示該月最後一個星期X;

 

               “W”字元:只在日期域出現,指定離給定日期最近的工作日(週一到週五),

                                “L”和“W”可以在日期域中聯合使用,LW表示這個月最後一週的工作日;

 

               “#”字元:  只在星期域中出現,表示該月第幾個周X。6#3表示該月第3個週五;

                               eg: * * * ? * 3#4  表示每月的第4個星期的周2,凌晨都執行一次

                               eg: * * * ? * 6#2  表示每月的第2個星期的周5,凌晨都執行一次

 

               “C”字元: 只在日期域和星期域出現,這個字元依靠一個指定的“日曆”。

 

 

三、常用Cron表示式示例

 

  •                  */5 * * * * ?  :每隔5秒執行一次;
  •                  0 */1 * * * ?  :每隔1分鐘執行一次;
  •                  0 0 23 * * ?  :每天23點執行一次;
  •                  0 0 1 * * ?  :每天凌晨1點執行一次;
  •                  0 0 1 1 * ?  :每月1號凌晨1點執行一次;
  •                  0 0 23 L * ?  :每月最後一天23點執行一次;
  •                  0 0 1 ? * L  :每週星期天凌晨1點實行一次;
  •                  0 0 2 1 * ? *  :表示在每月的1日的凌晨2點執行;
  •                  0 0 12 * * ?  :每天中午12點執行;
  •                  0 15 10 ? * *  :每天上午10:15執行 ;
  •                  0 15 10 * * ?  :20052005年的每天上午10:15執行 ;
  •                  0 * 14 * * ?  :在每天下午2點到下午2:59期間的每1分鐘執行 ;
  •                  0 0/5 14 * * ?  :在每天下午2點到下午2:55期間的每5分鐘執行 ;
  •                  0 26,29,33 * * * ?  :在26分、29分、33分執行一次;
  •                  0 0 0,13,18,21 * * ?  :每天的0點、13點、18點、21點都執行一次;
  •                  0 15 10 ? * MON-FRI  :表示週一到週五每天上午10:15執行;
  •                  0 15 10 ? 6L 2002-2006  :表示2002-2006年的每個月的最後一個星期五上午10:15執行;
  •                  0 0 10,14,16 * * ?  :每天上午10點,下午2點/4點執行;
  •                  0 0/30 9-17 * * ?  :朝九晚五工作時間內每半小時執行;
  •                  0 0 12 ? * WED  :表示每個星期三中午12點執行;
  •                  0 0/5 14,18 * * ?  :在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘執行 ;
  •                  0 0-5 14 * * ?  :在每天下午2點到下午2:05期間的每1分鐘執行 ;
  •                  0 10,44 14 ? 3 WED  :每年三月的星期三的下午2:10和2: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  :2002年至2005年的每月的最後一個星期五上午10:15執行 ;
  •                  0 15 10 ? * 6#3  :每月的第三個星期五上午10:15執行 ;

 

四、友情連結

       線自動生成Cron表示式網址:

           http://cron.qqe2.com/

                       

                             Now ~ ~ ~寫到這裡,就寫完了,如果有幸幫助到你,請記得關注我,共同一起見證我們的成長

 

小結

謝謝觀賞,我叫猿醫生。

猿友推薦:正在奔跑的程式猿