diff options
Diffstat (limited to 'src/util/time.rs')
| -rw-r--r-- | src/util/time.rs | 33 | 
1 files changed, 33 insertions, 0 deletions
| diff --git a/src/util/time.rs b/src/util/time.rs new file mode 100644 index 0000000..f88955d --- /dev/null +++ b/src/util/time.rs @@ -0,0 +1,33 @@ +use anyhow::Result; +use std::time::SystemTime; + +pub fn now() -> Result<u64> { +    Ok(SystemTime::now() +        .duration_since(SystemTime::UNIX_EPOCH)? +        .as_secs()) +} + +/// Pretty print duration. +pub fn pp_duration(seconds: u64) -> String { +    let minutes = (seconds as f64 / 60.).round(); +    let hours = (minutes / 60.).round(); +    let days = (hours / 24.).round(); + +    if seconds < 60 { +        plural(seconds, "seconde") +    } else if minutes < 60. { +        plural(minutes as u64, "minute") +    } else if hours < 24. { +        plural(hours as u64, "heure") +    } else { +        plural(days as u64, "jour") +    } +} + +fn plural(n: u64, str: &str) -> String { +    if n <= 1 { +        format!("{} {}", n, str) +    } else { +        format!("{} {}s", n, str) +    } +} | 
