#date-time #date #calendar #time #events #wasm #date-range

timex

根据给定参数生成类似于微软日历或谷歌日历的事件日期和时间

2 个不稳定版本

0.3.0-beta.12024年1月24日
0.1.0-beta.12024年1月20日

日期和时间 中排名第 227

MIT 许可证

55KB
1.5K SLoC

Timex:日期时间调度生成器

这个Rust库允许您根据起始日期和结束日期以及其他参数生成日期时间。它使用chrono crate进行日期和时间操作。

演示

https://github.com/jawahar273/timex/assets/7668497/841621b1-6325-4804-8dc3-cb5124c42a96

要查看重制的演示,请查看 server/README.md

功能

  • 时间范围
  • 发生
  • 基于每日、每周、每月(WIP:结束日期)和每年(即将推出)。
  • Webassembly支持(即将推出)

限制

  • 不适合纳秒级,因为这个项目依赖于(Chrono)具有已知限制。
  • 建议使用持久数据库来存储调度日期和时间。

用法



use timex::{
    schedule_date_times,
    model::ScheduleDetails
};
use chrono::{DateTime, Utc};
use serde_json;


fn main() {
    
    // Start: Mock for schedule details
    let t = r#"
    {
        "scheduledStartDateTime": "2023-12-14T08:00:44.939Z",
        "repeatEveryNumber": 1,
        "repeatEvery": "day",
        "endOption": "never"
    }
    "#;
    let job_details: ScheduleDetails = serde_json::from_str(&t).unwrap();
    // END: Mock for schedule details
    
    
    let previous_scheduled_date = DateTime::parse_from_rfc3339("2024-01-03T00:00:00Z")
                        .unwrap()
                        .with_timezone(&Utc);
    let start_range = DateTime::parse_from_rfc3339("2024-01-01T00:00:00Z")
                        .unwrap()
                        .with_timezone(&Utc);
    let end_range = DateTime::parse_from_rfc3339("2024-01-07T00:00:00Z")
                        .unwrap()
                        .with_timezone(&Utc);
    let result = schedule_date_times(
        &job_details,
        previous_scheduled_date,
        start_range,
        end_range,
    );
    println!("{:?}",&result.unwrap());
    // [
    // 2024-01-04T00:00:00Z,
    // 2024-01-05T00:00:00Z,
    // 2024-01-06T00:00:00Z,
    // 2024-01-07T00:00:00Z
    // ]
}

许可证

本项目受MIT许可证许可。

关于此项目

本项目将遵循semver版本转换,并遵循常规提交以跟踪更改日志。

依赖关系

~5.5–8MB
~135K SLoC