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.
Screen.Recording.on.demo.schedule.mov
For recreated demo check server/README.md
.
- Time range
- Occurrence
- Based on daily, weekly, monthly and yearly(soon)..
- Web assembly support
- Not good with nano second as this project rely on (
Chrono
) which has know limitation. - Recommenced to use a persistance database to store the schedule date and time.
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
// ]
}
This project is licensed under the MIT License.
This project will follow the conversion of semver versions and for the commit conventional commits to track change log.