OXYGENHUB

Coverage / src/cli/format.rs 100.0%

16 of 16 lines run, 1 of 2 functions · run #23 on main · run missed

1
//! Times as `oxy` prints them: UTC, `YYYY-MM-DD HH:MM:SSZ`.
2
31×
pub fn when(ms: u64) -> String {
41×
    let secs = (ms / 1000) as i64;
51×
    let days = secs.div_euclid(86_400);
61×
    let rem = secs.rem_euclid(86_400);
7
    // Civil-from-days (Howard Hinnant), UTC.
81×
    let z = days + 719_468;
91×
    let era = z.div_euclid(146_097);
101×
    let doe = z - era * 146_097;
111×
    let yoe = (doe - doe / 1460 + doe / 36_524 - doe / 146_096) / 365;
121×
    let y = yoe + era * 400;
131×
    let doy = doe - (365 * yoe + yoe / 4 - yoe / 100);
141×
    let mp = (5 * doy + 2) / 153;
151×
    let d = doy - (153 * mp + 2) / 5 + 1;
161×
    let m = if mp < 10 { mp + 3 } else { mp - 9 };
171×
    let y = if m <= 2 { y + 1 } else { y };
181×
    format!("{y:04}-{m:02}-{d:02} {:02}:{:02}:{:02}Z", rem / 3600, (rem % 3600) / 60, rem % 60)
191×
}