crate::ix!();
use time::format_description::parse;
pub fn format_iso8601date_time(n_time: i64) -> String {
let fmt = parse("[year]-[month]-[day]T[hour]:[minute]:[second]Z").unwrap();
let out = OffsetDateTime::from_unix_timestamp(n_time)
.map(|dt| dt.format(&fmt).unwrap_or_default())
.unwrap_or_default();
trace!(epoch = n_time, iso = %out, "format_iso8601date_time");
out
}
pub fn format_iso8601date(n_time: i64) -> String {
let fmt = parse("[year]-[month]-[day]").unwrap();
let out = OffsetDateTime::from_unix_timestamp(n_time)
.map(|dt| dt.format(&fmt).unwrap_or_default())
.unwrap_or_default();
trace!(epoch = n_time, iso = %out, "format_iso8601date");
out
}
pub fn parse_iso8601date_time(s: &str) -> i64 {
let fmt = parse("[year]-[month]-[day]T[hour]:[minute]:[second]Z").unwrap();
match OffsetDateTime::parse(s, &fmt) {
Ok(dt) => {
let ts = dt.unix_timestamp();
trace!(iso = s, epoch = ts, "parse_iso8601date_time");
ts
}
Err(e) => {
warn!(iso = s, error = %e, "parse_iso8601date_time_failed");
0
}
}
}