cron表示式的使用

2022-05-12 08:33:32 字數 1705 閱讀 3072

先了解cron表示式

cron表示式是乙個字串,字串以5或6個空格隔開,分為6或7個域,每乙個域代表乙個含義,cron有如下兩種語法格式:

seconds  minutes  hours  dayofmonth  month  dayofweek  yearseconds minutes hours dayofmonth month dayofweek

每乙個域可出現的字元如下:

seconds:可出現", - * /"四個字元,有效範圍為0-59的整數

minutes:可出現",- * /"四個字元,有效範圍為0-59的整數

hours:可出現",- * /"四個字元,有效範圍為0-23的整數

dayofmonth:可出現", - * / ? l w c"八個字元,有效範圍為0-31的整數

month:可出現", - * /"四個字元,有效範圍為1-12的整數或jan-dec

dayofweek:可出現", - * / ? l c #"八個字元,有效範圍為1-7的整數或sun-sat兩個範圍。// 0和7均代表星期天

year:可出現", - * /"四個字元,有效範圍為1970-2023年

每乙個域都使用數字,但還可以出現如下特殊字元,它們的含義是:

*:表示匹配該域的任意值,假如在minutes域使用 * , 即表示每分鐘都會觸發事件。

?:只能用在dayofmonthdayofweek兩個域。它也匹配域的任意值,但實際不會。因為dayofmonth和dayofweek會相互影響,以 * 為優先匹配

-:表示範圍,例如在minutes域使用5-20,表示從5分到20分鐘每分鐘觸發一次

/:表示起始時間開始觸發,然後每隔固定時間觸發一次,例如在minutes域使用5/20,則意味著5分鐘觸發一次,而25,45等分別觸發一次.

,:表示列出列舉值。例如:在minutes域使用5,20,則意味著在第5和第20分鐘分別觸發一次。

l:表示最後,只能出現在dayofweek和dayofmonth域,如果在dayofweek域使用5l,意味著在最後的乙個星期四觸發。

w:表示有效工作日(周一到周五),只能出現在dayofmonth域,系統將在離指定日期的最近的有效工作日觸發事件。例如:在 dayofmonth使用5w,如果5日是星期六,則將在最近的工作日:星期五,即4日觸發。如果5日是星期天,則在6日(周一)觸發;如果5日在星期一到星期五中的一天,則就在5日觸發。另外一點,w的最近尋找不會跨過月份

lw:這兩個字元可以連用,表示在某個月最後乙個工作日,即最後乙個非週六週末的日期。

#:用於確定每個月第幾個星期幾,只能出現在dayofweek域。例如在4#2,表示某月的第二個星期三。

在springboot中,我們可以需要先在主執行程式上新增註解@enablescheduling用來開啟定時功能。

在需要使用的方法上新增註解 @scheduled(cron = "")," "內為cron表示式

這裡寫乙個小例子

//

在特定的時間執行這個方法~

//cron表示式

@scheduled(cron = "0 0 10 1 * ? *")

public

void

hello()

表示每個月1號的10:00會執行一次這個程式。

cron表示式使用

cron表示式是乙個字串,分為6或7個域,每乙個域代表乙個含義,格式分別如下 seconds minutes hours dayofmonth month dayofweek seconds minutes hours dayofmonth month dayofweek year 每個域的取值寫法...

Java使用Cron表示式

crontriggers往往比 trigger更有用,如果您需要基於日曆的概念,而非 trigger完全指定的時間間隔,的發射工作的時間表。crontrigger,你可以指定觸發的時間表如 每星期五中午 或 每個工作日9 30時 甚至 每5分鐘一班9 00和10 00逢星期一上午,星期三星期五 即便...

Java使用Cron表示式

crontriggers往往比 trigger更有用,如果您需要基於日曆的概念,而非 trigger完全指定的時間間隔,的發射工作的時間表。crontrigger,你可以指定觸發的時間表如 每星期五中午 或 每個工作日9 30時 甚至 每5分鐘一班9 00和10 00逢星期一上午,星期三星期五 即便...