use std::time::SystemTime;
use chrono::offset::Utc;
use chrono::DateTime;
use chrono::SecondsFormat;
pub fn print_system_time_to_rfc3339(time: &SystemTime) -> String {
DateTime::<Utc>::from(*time).to_rfc3339_opts(SecondsFormat::Millis, true)
}
pub fn print_system_time_to_rfc3339_with_nanos(time: &SystemTime) -> String {
DateTime::<Utc>::from(*time).to_rfc3339_opts(SecondsFormat::Nanos, true)
}
pub fn print_system_time_to_iso8601_date(time: &SystemTime) -> String {
DateTime::<Utc>::from(*time).format("%Y-%m-%d").to_string()
}
#[cfg(test)]
mod tests {
use super::*;
use crate::parse::parse_system_time_from_str;
#[test]
fn print_rfc3339() {
let string = "2018-04-01T12:04:17.050Z";
let time = parse_system_time_from_str(string).unwrap();
let result = print_system_time_to_rfc3339(&time);
assert_eq!(result, string)
}
#[test]
fn print_rfc3339_with_nanos() {
let string = "2018-04-01T12:04:17.050937231Z";
let time = parse_system_time_from_str(string).unwrap();
let result = print_system_time_to_rfc3339_with_nanos(&time);
assert_eq!(result, string)
}
#[test]
fn print_iso8601_date() {
let string = "2018-05-07T23:59:59Z";
let time = parse_system_time_from_str(string).unwrap();
let result = print_system_time_to_iso8601_date(&time);
assert_eq!(result, "2018-05-07");
let string = "2018-05-07T00:00:00Z";
let time = parse_system_time_from_str(string).unwrap();
let result = print_system_time_to_iso8601_date(&time);
assert_eq!(result, "2018-05-07");
}
}