aboutsummaryrefslogtreecommitdiff
path: root/src/util/time.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/time.rs')
-rw-r--r--src/util/time.rs33
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)
+ }
+}