use std::time::SystemTime;
pub fn epoch_millis() -> u128 {
SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH)
.expect("error getting unix timestamp")
.as_millis()
}
#[doc(hidden)]
fn add_part(parts: &mut Vec<String>, time: u128, description: &str) {
match time {
0 => (),
1 => parts.push(format!("{} {}", time, description)),
_ => parts.push(format!("{} {}s", time, description)),
}
}
pub fn describe_ms(ms: u128) -> String {
let mut parts: Vec<String> = vec![];
let mut sec = ms / 1000;
if sec >= 60 {
let mut min = sec / 60;
sec %= 60;
if min >= 60 {
let mut hrs = min / 60;
min %= 60;
if hrs >= 24 {
let days = hrs / 24;
hrs %= 24;
add_part(&mut parts, days, "day");
}
add_part(&mut parts, hrs, "hour");
}
add_part(&mut parts, min, "minute");
}
add_part(&mut parts, sec, "second");
parts.join(", ")
}