Crates.io | cron_clock |
lib.rs | cron_clock |
version | 0.8.0 |
source | src |
created_at | 2020-06-10 12:28:06.292858 |
updated_at | 2021-10-04 04:12:40.98583 |
description | A cron expression parser and schedule explorer. Rich documentation and case studies and related upper-level libraries are available. |
homepage | |
repository | https://github.com/BinChengZhao/cron_clock |
max_upload_size | |
id | 252326 |
size | 107,863 |
A cron expression parser. Works with stable Rust v1.28.0.
The project is based on zslayton/cron
, thank him very much.
In addition to the regular expressions, you can also use the following shortcut expressions with Schedule::from_str, such as @yearly
@monthly
@weekly
@daily
@hourly
@minutely
@secondly
, make cron- Expression Iterator.
If you need a periodicized task manager, you may need delay-timer
(Time-manager of delayed tasks. Like crontab, but synchronous asynchronous
tasks are possible, and dynamic add/cancel/remove is supported) .
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
*/
shortcut expressions
& 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);
}
}
Licensed under either of
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above, without any additional terms or conditions.