12 个版本
0.8.0 | 2021 年 10 月 4 日 |
---|---|
0.7.0 | 2021 年 4 月 19 日 |
0.6.10 | 2021 年 3 月 19 日 |
0.6.7 | 2021 年 2 月 2 日 |
0.6.3 | 2020 年 6 月 12 日 |
#96 在 日期和时间
24,085 每月下载量
用于 11 个 Crates (4 个直接使用)
74KB
2K SLoC
cron_clock
Cron 表达式解析器。与稳定的 Rust v1.28.0 兼容。该项目基于 zslayton/cron
,非常感谢他。
除了正则表达式外,您还可以使用以下快捷表达式与 Schedule::from_str 一起使用,例如 @yearly
@monthly
@weekly
@daily
@hourly
@minutely
@secondly
,使 cron 表达式迭代器。
提示
如果您需要一个周期化任务管理器,您可能需要 delay-timer
(延迟任务的时间管理器。类似于 crontab,但支持同步和异步任务,并支持动态添加/取消/删除)。
示例
use cron::Schedule;
use chrono::Utc;
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();
println!("Upcoming fire times:");
for datetime in schedule.upcoming(Utc).take(10) {
println!("-> {}", datetime);
}
}
/*
Upcoming fire times:
-> 2018-06-01 09:30:00 UTC
-> 2018-06-01 12:30:00 UTC
-> 2018-06-01 15:30:00 UTC
-> 2018-06-15 09:30:00 UTC
-> 2018-06-15 12:30:00 UTC
-> 2018-06-15 15:30:00 UTC
-> 2018-08-01 09:30:00 UTC
-> 2018-08-01 12:30:00 UTC
-> 2018-08-01 15:30:00 UTC
-> 2018-08-15 09:30:00 UTC
*/
示例 快捷表达式
& ScheduleIteratorOwned
extern crate chrono;
extern crate cron_clock;
use cron_clock::Schedule;
use chrono::Utc;
use std::str::FromStr;
fn main() {
// shortcut expressions
let expression = "@hourly";
let schedule = Schedule::from_str(expression).unwrap();
println!("Upcoming fire times:");
// `upcoming_owned` Get iterators with ownership, so you don't have lifetime to worry about.
for datetime in schedule.upcoming_owned(Utc).take(10) {
println!("-> {}", datetime);
}
}
许可协议
许可协议为以下之一
- Apache 许可协议,版本 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 https://opensource.org/licenses/MIT),任选其一。
贡献
除非您明确说明,否则您提交的任何有意包含在作品中的贡献将按照上述双许可协议进行许可,不附加任何额外条款或条件。
依赖关系
~2.5MB
~38K SLoC