Swift 的 Cron

TravisCI

安装

Swift Package Manager

将以下行添加到你的 Package.swift 文件中

.package(url: "https://github.com/Ponyboy47/Cron-Swift.git", from: "2.3.0")

用法

import Cron

let job = try? CronJob(pattern: "*/10 * * * * *") { () -> Void in
    print("job executes every 10 seconds")
}

Cron 表达式语法

5 - 7 个字段,以 TAB 或空格分隔

字段名 范围 特殊字符 备注
0-59 * / , - H
分钟 0-59 * / , - H
小时 0-23 * / , - H L W
日(月份中的第几天) 1-31 * / , - H
月份 1-12 或 JAN-DEC * / , -
星期 0-7 或 SUN-SAT * / , - L # 0 或 7 代表星期日
年份 - * / , -

此实现的参考文档请见 维基百科

特殊字符

星号 (*)

星号表示该字段的完整范围。例如,hour 条目中的 * 表示 0-23

斜杠 (/)

斜杠可以与范围结合使用,以指定步长值。

逗号 (,)

逗号用于分隔列表中的项。

连字符 (-)

连字符用于表示范围。

范围是两个数字用连字符分隔。例如,hours 条目中的 8-11 指定在小时 8、9、10 和 11 执行。

井号 (#)

'#' 允许用于星期字段,并且后面必须跟一个介于 1 到 5 之间的数字。它允许你指定诸如“给定月份的第二个星期五”之类的结构。

哈希 (H)

H 符号可以像范围一样使用。例如,H H(0-7) * * * 表示在凌晨 0:00(午夜)到 7:59 AM 之间的某个时间。

H 符号可以被认为是一个范围内的随机值,但它实际上是给定值的哈希值,而不是随机函数,因此该值对其保持稳定。

最后 (L)

当在星期字段中使用时,它允许你指定诸如“给定月份的最后一个星期五”(“5L”)之类的结构。在日(月份中的第几天)字段中,它指定该月的最后一天。

工作日 (W)

此字符用于指定最接近给定日期的工作日(周一至周五)。