# Timex: Schedule Date Time Generator This Rust library allows you to generate date times based on a start and end date, along with other parameters. It utilizes the chrono crate for date and time manipulations. ## Demo For recreated demo check `server/README.md`. ## Feature - Time range - Occurrence - Based on daily, weekly, monthly(WIP: end date) and yearly(soon).. - Web assembly support(Soon) ## Limitation - Not good with nano second as this project rely on ([`Chrono`](https://docs.rs/chrono/latest/chrono/index.html#limitations)) which has know limitation. - Recommenced to use a persistance database to store the schedule date and time. ## Usage ```rust 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 // ] } ``` ## License This project is licensed under the MIT License. ## About this project This project will follow the conversion of [semver](https://semver.org) versions and for the commit [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) to track change log.