1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#![deny(rust_2018_idioms)]
//! A cron expression parser and schedule explorer
//! # Example
//! ```
//! use clockwork_cron::Schedule;
//! use chrono::{DateTime, NaiveDateTime, 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();
//! let ts = 1234567890;
//! let next_ts = match schedule
//! .after(&DateTime::<Utc>::from_utc(
//! NaiveDateTime::from_timestamp(ts, 0),
//! Utc,
//! ))
//! .take(1)
//! .next()
//! {
//! Some(datetime) => Some(datetime.timestamp()),
//! None => None,
//! };
//! }
//!
//! /*
//! 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
//! */
//! ```
pub mod error;
mod ordinal;
mod parsing;
mod queries;
mod schedule;
mod specifier;
mod time_unit;
pub use crate::schedule::Schedule;
pub use crate::time_unit::TimeUnitSpec;