大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 cron表達式解析

cron表達式解析

更新時間:2022-04-24 09:21:12 來源:動力節點 瀏覽2586次

給定一個 cron 表達式和一個時間戳,您可以獲得滿足 cron 表達式的下一個時間戳。

在另一個項目中,我決定使用 cron 表達式語法來編碼調度信息。因此,這個獨立的庫用于解析和應用時間戳到 cron 表達式。

此實現中的時間匹配算法是高效的,它盡可能避免猜測下一個匹配時間戳,這是許多實現中常見的技術。

還有一個配套的命令行實用程序來評估 cron 時間表達式:https ://github.com/gorhill/cronexpr/tree/master/cronexpr (當然使用這個庫)。

執行

秒數 0-59 * / , -
分鐘 是 0-59 * / , -
小時 是 0-23 * / , -
日期 是 1-31 * / , - LW
月份 是 1-12 或 JAN-DEC * / , -
星期幾 是 0-6 或 SUN-SAT * / , - L #
年份 1970–2099 * / , -

星號 ( * )

星號表示 cron 表達式匹配該字段的所有值。例如,在第 4 個字段(月)中使用星號表示每個月。

斜線 ( / )

斜線描述范圍的增量。例如3-59/15,在分鐘字段中指示一小時的第三分鐘以及之后每 15 分鐘一次。該形式*/...等價于“first-last/...”形式,即在字段的最大可能范圍上遞增。

逗號 ( , )

逗號用于分隔列表中的項目。例如,MON,WED,FRI在第 5 個字段(星期幾)中使用表示星期一、星期三和星期五。

連字符 ( - )

連字符定義范圍。例如,2000-2010 表示從公元 2000 年到 2010 年之間的每一年,包括在內。

大號

L代表“最后”。當在星期幾字段中使用時,它允許您指定構造,例如5L給定月份的“最后一個星期五”( )。在 day-of-month 字段中,它指定該月的最后一天。

W

W日期字段允許使用該字符。此字符用于指定距給定日期最近的工作日(周一至周五)。例如,如果您要指定15W為 day-of-month 字段的值,則其含義是:“距每月 15 日最近的工作日”。

因此,如果 15 日是星期六,則觸發器會在 14 日星期五觸發。如果 15 日是星期日,則觸發器會在 16 日星期一觸發。如果 15 日是星期二,那么它會在 15 日星期二觸發。但是,如果您指定1W日期的值,并且第 1 天是星期六,則觸發器會在第 3 天的星期一觸發,因為它不會“跳過”一個月的日期邊界。

W僅當月份中的某天是一天,而不是日期范圍或日期列表時,才可以指定該字符。

該W字符還可以與 結合L,即LW表示“本月的最后一個工作日”。

哈希 (#)

#允許用于星期幾字段,并且后面必須跟一個介于 1 到 5 之間的數字。它允許您指定構造,例如給定月份的“第二個星期五”。

預定義的 cron 表達式

條目描述相當于
@annually 每年 1 月 1 日凌晨午夜運行一次 0 0 0 1 1 * *
@yearly 每年 1 月 1 日午夜運行一次 0 0 0 1 1 * *
@monthly 每月第一天凌晨的午夜運行一次 0 0 0 1 * * *
@weekly 每周在周日早上的午夜運行一次 0 0 0 * * 0 *
@daily 每天午夜運行一次 0 0 0 * * * *
@hourly 每小時開始運行一次 0 0 * * * * *
@reboot 不支持

其他詳情

如果僅存在六個字段,0則附加第二個字段,即* * * * * 2013內部成為0 * * * * * 2013。

如果僅存在五個字段,0則附加第二個字段并附加一個通配符年份字段,即* * * * Mon內部成為0 * * * * Mon *。

星期字段的域是 [0-7] 而不是 [0-6],7 是星期日(如 0)。這符合http://linux.die.net/man/5/crontab#。

截至目前,如果提供了格式錯誤的 cron 表達式,則代碼的行為尚未確定

安裝

去獲取 github.com/gorhill/cronexpr

用法

導入庫:

導入“github.com/gorhill/cronexpr”
導入“時間”

最簡單的方法:

nextTime := cronexpr.MustParse("0 0 29 2 *").Next(time.Now())

假設time.Now()是“2013-08-29 09:28:00”,那么nextTime將是“2016-02-29 00:00:00”。

如果要重用它,可以保留返回的 Expression 指針:

expr := cronexpr.MustParse("0 0 29 2 *")
nextTime := expr.Next(time.Now())
...
nextTime = expr.Next(nextTime)

用于time.IsZero()查明是否返回了有效時間。例如,

cronexpr.MustParse("* * * * * 1980").Next(time.Now()).IsZero()

將返回true,而

cronexpr.MustParse("* * * * * 2050").Next(time.Now()).IsZero()

將返回false(截至 2013 年 8 月 29 日...)

您還可以查詢n下一個時間戳:

cronexpr.MustParse("0 0 29 2 *").NextN(time.Now(), 5)

它返回一段 time.Time 對象,包含以下時間戳(截至 2013 年 8 月 30 日):

2016-02-29 00:00:00
2020-02-29 00:00:00
2024-02-29 00:00:00
2028-02-29 00:00:00
2032-02-29 00:00:00

Next和返回的時間值NextN的時區始終是作為參數傳遞的時間值的時區,除非返回零時間值。如果大家想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面的課程內容從入門到精通,通俗易懂,適合小白學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 一区二区三区高清 | www在线小视频免费 www中文字幕 | 刺激videoschina偷拍 | 国产日韩欧美综合 | 国产高清在线精品免费 | 亚洲国产精品久久 | 欧美污视频网站 | 欧美亚洲国产成人高清在线 | 毛片女人毛片一级毛片毛片 | 资源站在线 | 亚洲男女在线 | 国产成人精品免费午夜 | 国产一级爱c片免费播放 | 久久精品国产国语对白 | 日本三级欧美三级 | 国产高清美女一级a毛片久久 | 久久久久久极精品久久久 | free性欧美video69 | 中文字幕三级理论影院 | 日一级片 | 国产欧美在线不卡 | 爱爱小视频成人免费 | 精品日韩一区二区三区 | 66精品综合久久久久久久 | 愉拍自拍视频在线播放 | 美日韩免费视频 | 成人淫片免费视频95视频 | 成 人 色综合 | 第一序列番外篇在哪里看 | 欧美金八天国 | 美女视频久久 | 欧美黄色免费网址 | 宅男看片午夜大片啪啪mv | 亚洲欧美字幕 | 亚洲综合爱爱久久网 | 香蕉久久成人网 | 亚洲视频一区二区三区四区 | 欧美国产亚洲18 | 在线播放heyzo北条麻妃 | 欧美午夜寂寞影院安卓列表 | 亚洲精品综合网 |