OXYGENHUB
# b576d05cf862 spectra / src / cli / format.rs
777 B · Rust · last changed Project skeleton in Oxygen's shape: workspace, deps/oxygen pinned, make check, version, deps-check (#1) 2 days ago source blame history raw
258bb382 Andy McCall ↶ 1
//! Times as `oxy` prints them: UTC, `YYYY-MM-DD HH:MM:SSZ`.
2
3
pub fn when(ms: u64) -> String {
4
    let secs = (ms / 1000) as i64;
5
    let days = secs.div_euclid(86_400);
6
    let rem = secs.rem_euclid(86_400);
7
    // Civil-from-days (Howard Hinnant), UTC.
8
    let z = days + 719_468;
9
    let era = z.div_euclid(146_097);
10
    let doe = z - era * 146_097;
11
    let yoe = (doe - doe / 1460 + doe / 36_524 - doe / 146_096) / 365;
12
    let y = yoe + era * 400;
13
    let doy = doe - (365 * yoe + yoe / 4 - yoe / 100);
14
    let mp = (5 * doy + 2) / 153;
15
    let d = doy - (153 * mp + 2) / 5 + 1;
16
    let m = if mp < 10 { mp + 3 } else { mp - 9 };
17
    let y = if m <= 2 { y + 1 } else { y };
18
    format!("{y:04}-{m:02}-{d:02} {:02}:{:02}:{:02}Z", rem / 3600, (rem % 3600) / 60, rem % 60)
19
}