1 个不稳定版本
0.1.0 | 2021 年 2 月 21 日 |
---|
#145 在 缓存
每月 874 次下载
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.0 或 MIT 许可证。除非您明确表示,否则您提交给 Proteus 的任何有意包含的贡献,根据 Apache-2.0 许可证的定义,应双重许可,如上所述,不附加任何额外条款或条件。
依赖项
~1.2–2MB
~36K SLoC