turn all the date into datetime objects

This commit is contained in:
Mylloon 2022-08-15 17:50:16 +02:00
parent 6125911d0a
commit 24be243dca
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -1,6 +1,6 @@
use std::collections::HashMap; use std::collections::HashMap;
use chrono::{TimeZone, Utc}; use chrono::{Duration, TimeZone, Utc};
use regex::{Captures, Regex}; use regex::{Captures, Regex};
use scraper::{Html, Selector}; use scraper::{Html, Selector};
@ -29,27 +29,38 @@ pub async fn info() {
e if e.starts_with("Début") => { e if e.starts_with("Début") => {
let captures = re.captures(&e).unwrap(); let captures = re.captures(&e).unwrap();
let date = captures.name("d").unwrap().as_str(); let start_date = get_date(captures.name("d").unwrap().as_str());
let rep = captures.name("r").unwrap().as_str();
let from = Utc let rep: i64 = captures.name("r").unwrap().as_str().parse().expect("NaN");
.datetime_from_str(&anglophonization(date), "%e %B %Y %H:%M") // -1 car la première semaine est déjà compté
.unwrap(); let end_date = start_date + Duration::weeks(rep - 1);
println!("'{}' -> {}", date, from); data.insert(
i,
data.insert(i, format!("{} pendant {}s", date, rep)); format!(
"{} pendant {} semaines, donc arrêt le {}",
start_date, rep, end_date
),
);
} }
e if e.starts_with("Reprise") => { e if e.starts_with("Reprise") => {
let captures = re.captures(&e).unwrap(); let captures = re.captures(&e).unwrap();
captures.name("g"); captures.name("g");
let start_date = get_date(captures.name("d").unwrap().as_str());
let rep: i64 = captures.name("r").unwrap().as_str().parse().expect("NaN");
// -1 car la première semaine est déjà compté
let end_date = start_date + Duration::weeks(rep - 1);
data.insert( data.insert(
i, i,
format!( format!(
"{} puis reprise {} pendant {}s", "{}. Puis reprise {} pendant {} semaines, donc arrêt le {}",
data.get(&i).unwrap(), data.get(&i).unwrap(),
captures.name("d").unwrap().as_str(), start_date,
captures.name("r").unwrap().as_str() rep,
end_date
), ),
); );
} }
@ -99,3 +110,11 @@ fn anglophonization(date: &str) -> String {
}) })
) )
} }
/// Turn a string to a DateTime
fn get_date(date: &str) -> chrono::DateTime<Utc> {
// Use and keep UTC time, we have the hour set to 12h and
// Paris 8 is in France so there is no problems
Utc.datetime_from_str(&anglophonization(date), "%e %B %Y %H:%M")
.unwrap()
}