aboutsummaryrefslogtreecommitdiff
path: root/src/model/time.rs
blob: 10cf6d306617704d5171998d780b60a308fe0d75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use chrono::{NaiveTime, Timelike};

pub fn pprint(t: NaiveTime) -> String {
    if t.minute() == 0 {
        format!("{}h", t.hour())
    } else {
        format!("{}h{}", t.hour(), t.minute())
    }
}

pub fn parse(t: &str) -> Option<NaiveTime> {
    match t.split('h').collect::<Vec<&str>>()[..] {
        [hours, minutes] => {
            if minutes.trim().is_empty() {
                NaiveTime::from_hms_opt(hours.parse().ok()?, 0, 0)
            } else {
                NaiveTime::from_hms_opt(hours.parse().ok()?, minutes.parse().ok()?, 0)
            }
        }
        _ => None,
    }
}