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

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

cron表達式解析

更新時間:2022-04-24 09:21:12 來源:動力節(jié)點 瀏覽2637次

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

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

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

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

執(zhí)行

秒數(shù) 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 年之間的每一年,包括在內(nèi)。

大號

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

W

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

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

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

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

哈希 (#)

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

預(yù)定義的 cron 表達式

條目描述相當(dāng)于
@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內(nèi)部成為0 * * * * * 2013。

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

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

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

安裝

去獲取 github.com/gorhill/cronexpr

用法

導(dǎo)入庫:

導(dǎo)入“github.com/gorhill/cronexpr”
導(dǎo)入“時間”

最簡單的方法:

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

假設(shè)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的時區(qū)始終是作為參數(shù)傳遞的時間值的時區(qū),除非返回零時間值。如果大家想了解更多相關(guān)知識,不妨來關(guān)注一下動力節(jié)點的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,通俗易懂,適合小白學(xué)習(xí),希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 九色国产在视频线精品视频 | 亚洲九九色| 精品中文字幕乱码一区二区 | 国产精品久久久久久久午夜片 | 特黄特色一级aa毛片免费观看 | 国产欧美久久一区二区 | 国产欧美日韩网站 | 手机在线观看亚洲国产精品 | 免费一级欧美大片视频在线 | 国产香蕉在线视频 | 亚洲精品96欧美一区二区 | 最新日本免费一区二区三区中文 | 免费看曰批女人爽的视频网址 | a久久久久一级毛片护士免费 | 99视频精品全部免费观看 | 免费一看一级毛片全播放 | 亚洲毛片一级带毛片基地 | 久久在线播放 | 欧美成人香蕉网在线观看 | 好吊在线视频 | 久久精品国产999久久久 | 色视频在线免费 | 中文字幕在线观看2023 | 四虎影视1515hh四虎免费 | 成人午夜久久精品 | 四虎国产精品永久地址48 | 亚洲码和乱人伦中文一区 | 日韩免费一区二区三区 | 国产成人精品亚洲日本在线 | 色婷婷综合久久久久中文一区二区 | 久久99国产亚洲精品观看 | 国产亚洲欧美久久精品 | 国产高清一区二区三区 | 色综合天天综合高清网国产 | 久久久久一级片 | 久久久视| 亚洲国产另类久久久精品小说 | 国产精品久久久久国产精品三级 | 成年人黄色在线观看 | 毛片大全免费观看 | 特黄特黄一级高清免费大片 |