quartz任務調度之Cron表達式書寫

Cron表達式是一個字符串,字符串以5/6空格隔開,分爲6/7個區域,每個區域代表一個含義,Cron有兩種語法格式:

 

(1)/Seconds minutes hours day month week year

(2)/Seconds minutes hours day month week

從右往左是:年 星期   月 日 時 分 秒

各個字段含義:

 

  1. *標識匹配該區域的所有值,假如Minutes區域使用*,表示每分鐘都會觸發的事件
  2. ? 只能在month和week兩個區域,它也會匹配區域的任意值,但實際不會。因爲DayOfMonth 和DayOfWeek會相互影響,例如每月的20日觸發調度,不管是20日到底是星期幾,則只能有如下寫法:13 13 15 20 * ?,其中最後一位只能用問號,而不能用星號,如果*表示不管星期幾都觸發,實際並不是這樣。
  3. -:表示範圍,例如在Minutes區域使用5-20,表示從5到20分鐘每分鐘觸發一次
  4. /: 表示起始時間開始觸發,然後每個固定時間觸發一次。例如Minutes區域使用5/20,表示第5分鐘觸發一次,第25、第45分別觸發。
  5. ,:標識列舉枚舉值,例如Minutes使用5,20,意味着在5和20分鐘分別觸發一次
  6. L:表示最後,只能出現在DayOfWeek和DayOfMonth區域,如果在DayOfWeek使用5L,意味着在最後的星期四觸發。L(Last)
  7. W:表示有效工作日(週一到週五),只能出現在DayOfMonth系統將在離指定日期的最近有效工作日觸發事件,例如在DayOfMonth使用5W,如果是星期六,則將在最近的工作日:星期五,即4日觸發。如果5日是星期天,則在6日(週一)觸發;如果是5日在星期一和星期五中的一天,則在5日觸發。另外一點,w的最近尋找不會跨月份。
  8. LW:這兩個字符可以連用,表示在某個月的最後一個工作日,即最後一個星期五。
  9. #:用於確定每個月第幾個星期幾,只能出現在DayOfMonth ,例如4#2,表示某月的第2個星期3(su mon tu wen,所以寫序號4)

熟悉常用表達式:日和星期用?表示,但是不能連用

  1. 0 0 2 1 * ?*     每月一號2:00開始觸發
  2. 0 15 10 ?* MON-FRI  週一到週五每天10:15執行
  3. 0 15 10 ?* 6L 2002-2006  2002到2006年每月最後的星期五10:15:00觸發
  4. 0 0 10,14,16 * * ?  每天10,14,16點整觸發   --表示月日時分秒
  5. 0 0/30 9-17 * * ? 每天9點到17點 的00分和30分分別觸發一次,早九晚五工作時間內,每半小時觸發一次。
  6. 0 0 12 ? * WED  每個週三12:00:00觸發
  7. 0 0 12 * * ? 每天中午12:00:00觸發
  8. 0 10 15 ? *  * 每天15:10分觸發
  9. 0 15 10 * * ?* 每天10:15:00觸發,所以上下相等
  10. 0 15 10 * * ?2005 2005年每天10:15:00執行
  11.  0 * 14 * * ?在每天下午2點到下午2:59期間每分鐘執行一次
  12. 0 0/5 14 * * ?在每天下午2點到2:55每隔五分鐘執行一次
  13. 0 0/5 14,18 * * ? 在每天下午14,18點每隔五分鐘執行一次
  14. 0 0-5 14 * * ? 在每天下午2點下午0到5分鐘每分鐘執行一次。
  15. 0 10,44 14 ?3 WED 每年三月中,每天14點10分和44分分別執行一次
  16. 0 15 10 ? *  MON-FRI 每週一到週五 每天10:15:00觸發
  17. 0 15 10 L * ? 每月最後一天10:15:00觸發一次
  18. 0 15 10 ? *  6L  每月最後一個星期五上午10:15:00觸發
  19. 0 15 10 ?* 6L 2002-2005 2002到2005年每月的最後一個星期五上午10:15:00執行
  20. 0 15 10 ? * 6#3 每月第三個星期五上午10:15觸發。

 

在子表達式(分鐘)裏0/15 表示從第0分開始,每15分鐘

在表達式(分鐘)3/20 表示從第三分鐘開始,每20分鐘執行一次,和(2,23,43)效果一致

?字符僅用於天(月)和天(星期)兩個表達式,表示不指定值

當兩個表達式之一被指定值以後,爲了避免衝突,需要將在另一個子表達式值設置爲“?”

L是Last縮寫,用於天(月)和天(星期)兩個表達式

在天(月)子表達式彙總,“L”表示最後一個月份得最後一天

在天(星期)子表達式中,“L”表示一個星期的最後一天,也就是SAT

如果在“L”前有具體內容,它就表示其他的含義了。

6L表示一個月最後一天,SATL表示最後一個星期六

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章