Crate cron_exp[][src]

Schedule

Is a CRON expression parser and explorer.

It Supports both Crantab and Vixie CRON. If 5 arguments are provided Crantab is assumed, otherwise Vixie CRON.

The following Syntax is supported:

  • * any value
  • , value list
  • - range values
  • / step values
use chrono::{DateTime, TimeZone, Utc};
use cron_exp::Schedule;
use std::str::FromStr;
//               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!("Previous fire times:");
for datetime in schedule.iter_from(&last.unwrap()).rev().take(40) {
    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
*/

Structs

Schedule

Represents a parsed CRON schedule. It is designed for space efficiency for caching and storage purposes such as in a CRON Scheduler.

Enums

ParseScheduleError