#cron-expression #cron #expression-parser #schedule #day-week #cache #vixie

cron-exp

一个专为缓存和存储目的,如 CRON 调度程序,设计的 CRON 表达式解析器和探索器,旨在提高空间效率。

1 个不稳定版本

0.1.0 2021 年 2 月 21 日

#145缓存

Download history 53/week @ 2024-03-13 49/week @ 2024-03-20 39/week @ 2024-03-27 54/week @ 2024-04-03 61/week @ 2024-04-10 92/week @ 2024-04-17 76/week @ 2024-04-24 44/week @ 2024-05-01 42/week @ 2024-05-08 52/week @ 2024-05-15 31/week @ 2024-05-22 88/week @ 2024-05-29 84/week @ 2024-06-05 160/week @ 2024-06-12 337/week @ 2024-06-19 279/week @ 2024-06-26

每月 874 次下载

MIT/Apache

46KB
991

cron-rs

一个 CRON 表达式解析器和探索器。它旨在提高空间效率,用于缓存和存储目的,如 CRON 调度程序。

示例

use chrono::{DateTime, TimeZone, Utc};
use cron_rs::schedule::Schedule;
use std::str::FromStr;

fn main() {
    //               sec  min   hour   day of month   month   day of week   year
    let expression = "0   30   9,12,15     1,15       May-Aug  Mon,Wed,Fri  2018/2";
    let schedule = Schedule::from_str(expression).unwrap();

    let mut last: Option<DateTime<Utc>> = None;
    let from_date = Utc.ymd(2022, 6, 1).and_hms(8, 40, 1);

    println!("Upcoming fire times:");
    for datetime in schedule.iter_from(&from_date).take(10) {
        last = Some(datetime);
        println!("next -> {:?}", datetime);
    }

    println!("\nPrevious fire times:");
    for datetime in schedule.iter_from(&last.unwrap()).rev().take(10) {
        println!("prev -> {:?}", datetime);
    }
}

/*
Upcoming fire times:
next -> 2022-06-01T09:30:00Z
next -> 2022-06-01T12:30:00Z
next -> 2022-06-01T15:30:00Z
next -> 2022-06-15T09:30:00Z
next -> 2022-06-15T12:30:00Z
next -> 2022-06-15T15:30:00Z
next -> 2022-07-01T09:30:00Z
next -> 2022-07-01T12:30:00Z
next -> 2022-07-01T15:30:00Z
next -> 2022-07-15T09:30:00Z

Previous fire times:
prev -> 2022-07-01T15:30:00Z
prev -> 2022-07-01T12:30:00Z
prev -> 2022-07-01T09:30:00Z
prev -> 2022-06-15T15:30:00Z
prev -> 2022-06-15T12:30:00Z
prev -> 2022-06-15T09:30:00Z
prev -> 2022-06-01T15:30:00Z
prev -> 2022-06-01T12:30:00Z
prev -> 2022-06-01T09:30:00Z
prev -> 2020-07-15T15:30:00Z
*/

Crontab

# ┌─────────────────────  minute (0 - 59)
# │ ┌───────────────────  hour   (0 - 23)
# │ │ ┌─────────────────  dom    (1 - 31) day of month
# │ │ │ ┌───────────────  month  (1 - 12 or Jan-Dec)
# │ │ │ │ ┌─────────────  dow    ((0 or 7) - 6 or Sun - Sat)  day of week (Sunday to Saturday)
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>
字段 必需 允许的值 允许的特殊字符
分钟 0–59 * , - /
小时 0–23 * , - /
月份中的天数 1–31 * , - /
月份 1–12 或 Jan-Dec * , - /
星期中的某天 (0 或 7)–6 或 Sun-Sat * , - /

Vixie CRON

# ┌───────────────────────  seconds (0 - 59)
# │ ┌─────────────────────  minute  (0 - 59)
# │ │ ┌───────────────────  hour    (0 - 23)
# │ │ │ ┌─────────────────  dom     (1 - 31) day of month
# │ │ │ │ ┌───────────────  month   (1 - 12 or Jan-Dec)
# │ │ │ │ │ ┌─────────────  dow     (1-7 or Sun-Sat)  day of week (Sunday to Saturday)
# │ │ │ │ │ │ ┌──────────── year    (1970-2099 Optional)
# │ │ │ │ │ │ │
# │ │ │ │ │ │ │
# * * * * * * *
字段 必需 允许的值 允许的特殊字符
0–59 * , - /
分钟 0–59 * , - /
小时 0–23 * , - /
月份中的天数 1–31 * , - /
月份 1–12 或 Jan-Dec * , - /
星期中的某天 1–7 或 Sun-Sat * , - /
年份 1970-2099 * , - /

许可协议

根据您的选择,在 Apache 许可证 2.0 版或 MIT 许可证下授权。有关详细信息,请参阅 Apache 许可证,版本 2.0MIT 许可证
除非您明确表示,否则您提交给 Proteus 的任何有意包含的贡献,根据 Apache-2.0 许可证的定义,应双重许可,如上所述,不附加任何额外条款或条件。

依赖项

~1.2–2MB
~36K SLoC