2 个不稳定版本

0.2.0 2021年4月19日
0.1.0 2021年4月15日

#486日期和时间

Apache-2.0

68KB
1.5K SLoC

创建和消费 Cron 表达式的库。它支持一些扩展语法。

概览

Cron 表达式由五个字段组成,代表当前时间的不同部分。每个字段定义了一组值,表示表达式何时匹配。当 所有 字段都匹配时,表达式匹配;当任何值匹配时,字段匹配。

一个简单的匹配所有时间的 Cron 表达式看起来像 * * * * *。它为每个字段指定单个值,每个值都是通配符。字段按以下顺序出现:1 分钟 1 小时 1 月中的某一天 1 月 1 周中的某一天

参考表达式

表达式 描述
* * * * * 匹配所有时间
* 8-17 * *mon-fri 匹配周一至周五的上午 8 点至下午 5 点
* *L3,6,9,12 * 匹配每个季度的最后一天
30 1 * * * 每天凌晨 1:30

可能性

可以为所有字段提供四种标准值

  • 通配符 (*)
    • 此值匹配所有时间
  • 范围 (5-10)
    • 这是一个表达式匹配时的 包含 范围
  • 单个 (10)
    • 这代表表达式匹配时的单个值
  • 步长范围 (*/2)
    • 这代表表达式匹配时的一组值
    • 它从指定字段的最低值开始,以步长递增,直到覆盖整个范围

月份中的某一天字段有两个特殊值可以提供

  • 最近的星期几 (15W)
    • 此值匹配提供的月份中的最近星期几
    • 如果该天是星期六,则匹配前一天的星期五
    • 如果该天是星期日,则匹配下一天的星期一
  • 月的最后一天 (LL-5)
    • 此值匹配月底的最后一天
    • 它可以选择性地偏移一些天数以匹配“X天前月底”

星期几字段有两个特殊值可以提供

  • 星期的第N天(3#2
    • 此值与提供的星期中的特定出现相匹配。
    • 在示例值中,它与星期的第2次出现相匹配,即星期的第3天(星期三)
  • 星期的最后一天(2L
    • 此值与提供的星期的最后出现相匹配。

此外,月份星期字段可以提供数值或三位字母别名。

月份

别名
JAN 1
FEB 2
MAR 3
APR 4
MAY 5
JUN 6
JUL 7
AUG 8
SEP 9
OCT 10
NOV 11
DEC 12

星期

别名
SUN 0
MON 1
TUE 2
WED 3
THU 4
FRI 5
SAT 6

依赖

~3.5–5MB
~88K SLoC