#cron #expression-parser #schedule #repeat #periodic #time #regex

cron_clock

A cron 表达式解析器和调度探索器。丰富的文档和案例研究以及相关高级库可用。

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日期和时间

Download history 2761/week @ 2024-03-14 3099/week @ 2024-03-21 3212/week @ 2024-03-28 2962/week @ 2024-04-04 3034/week @ 2024-04-11 3243/week @ 2024-04-18 3369/week @ 2024-04-25 4116/week @ 2024-05-02 4315/week @ 2024-05-09 3796/week @ 2024-05-16 4792/week @ 2024-05-23 5767/week @ 2024-05-30 5220/week @ 2024-06-06 6446/week @ 2024-06-13 6145/week @ 2024-06-20 5385/week @ 2024-06-27

24,085 每月下载量
用于 11 个 Crates (4 个直接使用)

MIT/Apache

74KB
2K SLoC

cron_clock Rust

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);
   }
 }

许可协议

许可协议为以下之一

贡献

除非您明确说明,否则您提交的任何有意包含在作品中的贡献将按照上述双许可协议进行许可,不附加任何额外条款或条件。

依赖关系

~2.5MB
~38K SLoC