use chrono::{DateTime, Utc};
use std::time::{SystemTime, UNIX_EPOCH};
pub fn print_to_width(output: String, width: usize) -> Result<(), ()> {
if output.len() > width {
let partial_output = &output[..width];
print!("{partial_output}");
return Err(());
}
print!("{output}");
for _ in 0..width - output.len() {
print!(" ");
}
Ok(())
}
pub fn system_time_to_date_time(t: SystemTime) -> Option<DateTime<Utc>> {
let (sec, nsec) = match t.duration_since(UNIX_EPOCH) {
Ok(dur) => (dur.as_secs() as i64, dur.subsec_nanos()),
Err(e) => {
let dur = e.duration();
let (sec, nsec) = (dur.as_secs() as i64, dur.subsec_nanos());
if nsec == 0 {
(-sec, 0)
} else {
(-sec - 1, 1_000_000_000 - nsec)
}
}
};
DateTime::from_timestamp(sec, nsec)
}