diff --git a/src/uu/dmesg/src/dmesg.rs b/src/uu/dmesg/src/dmesg.rs index 0e33c36..51153d5 100644 --- a/src/uu/dmesg/src/dmesg.rs +++ b/src/uu/dmesg/src/dmesg.rs @@ -158,6 +158,9 @@ impl Dmesg<'_> { TimeFormat::Ctime => { print!("[{}] ", time_formatter::ctime(record.timestamp_us)) } + TimeFormat::Iso => { + print!("{} ", time_formatter::iso(record.timestamp_us)) + } TimeFormat::Raw => { print!("[{}] ", time_formatter::raw(record.timestamp_us)) } diff --git a/src/uu/dmesg/src/time_formatter.rs b/src/uu/dmesg/src/time_formatter.rs index 59cd867..23e0bbe 100644 --- a/src/uu/dmesg/src/time_formatter.rs +++ b/src/uu/dmesg/src/time_formatter.rs @@ -16,6 +16,13 @@ pub fn ctime(timestamp_us: u64) -> String { date_time.format("%a %b %d %H:%M:%S %Y").to_string() } +pub fn iso(timestamp_us: u64) -> String { + let date_time = boot_time() + .checked_add_signed(TimeDelta::microseconds(timestamp_us as i64)) + .unwrap(); + date_time.format("%Y-%m-%dT%H:%M:%S,%6f%:z").to_string() +} + static BOOT_TIME: OnceLock<DateTime<FixedOffset>> = OnceLock::new(); #[cfg(feature = "fixed-boot-time")]