diff --git a/tests/by-util/test_dmesg.rs b/tests/by-util/test_dmesg.rs
index 08e398a..c174518 100644
--- a/tests/by-util/test_dmesg.rs
+++ b/tests/by-util/test_dmesg.rs
@@ -30,3 +30,19 @@ fn test_kmsg_json() {
         .no_stderr()
         .stdout_is_templated_fixture("test_kmsg_json.expected", &[("\r\n", "\n")]);
 }
+
+#[test]
+fn test_kmsg_time_format() {
+    let time_formats = ["delta", "reltime", "ctime", "notime", "iso", "raw"];
+    for format in time_formats {
+        let time_format_arg = format!("--time-format={format}");
+        let expected_output = format!("test_kmsg_time_format_{format}.expected");
+        new_ucmd!()
+            .arg("--kmsg-file")
+            .arg("kmsg.input.1")
+            .arg(time_format_arg)
+            .succeeds()
+            .no_stderr()
+            .stdout_is_fixture(expected_output);
+    }
+}
diff --git a/tests/fixtures/dmesg/kmsg.input.1 b/tests/fixtures/dmesg/kmsg.input.1
new file mode 100644
index 0000000..8c2a5cb
Binary files /dev/null and b/tests/fixtures/dmesg/kmsg.input.1 differ
diff --git a/tests/fixtures/dmesg/test_kmsg_time_format_ctime.expected b/tests/fixtures/dmesg/test_kmsg_time_format_ctime.expected
new file mode 100644
index 0000000..559346d
--- /dev/null
+++ b/tests/fixtures/dmesg/test_kmsg_time_format_ctime.expected
@@ -0,0 +1,5 @@
+[Mon Nov 18 19:34:12 2024] LOG_EMERG LOG_AUTH
+[Mon Nov 18 19:34:13 2024] LOG_EMERG LOG_AUTHPRIV
+[Mon Nov 18 19:34:13 2024] LOG_EMERG LOG_CRON
+[Mon Nov 18 19:34:13 2024] LOG_EMERG LOG_DAEMON
+[Mon Nov 18 19:35:00 2024] LOG_EMERG LOG_FTP
diff --git a/tests/fixtures/dmesg/test_kmsg_time_format_delta.expected b/tests/fixtures/dmesg/test_kmsg_time_format_delta.expected
new file mode 100644
index 0000000..81b8aad
--- /dev/null
+++ b/tests/fixtures/dmesg/test_kmsg_time_format_delta.expected
@@ -0,0 +1,5 @@
+[<    0.000000>] LOG_EMERG LOG_AUTH
+[<    0.000000>] LOG_EMERG LOG_AUTHPRIV
+[<   -0.166667>] LOG_EMERG LOG_CRON
+[<    0.666667>] LOG_EMERG LOG_DAEMON
+[<   47.000000>] LOG_EMERG LOG_FTP
diff --git a/tests/fixtures/dmesg/test_kmsg_time_format_iso.expected b/tests/fixtures/dmesg/test_kmsg_time_format_iso.expected
new file mode 100644
index 0000000..199ef99
--- /dev/null
+++ b/tests/fixtures/dmesg/test_kmsg_time_format_iso.expected
@@ -0,0 +1,5 @@
+2024-11-18T19:34:12,866807+07:00 LOG_EMERG LOG_AUTH
+2024-11-18T19:34:13,366807+07:00 LOG_EMERG LOG_AUTHPRIV
+2024-11-18T19:34:13,200140+07:00 LOG_EMERG LOG_CRON
+2024-11-18T19:34:13,866807+07:00 LOG_EMERG LOG_DAEMON
+2024-11-18T19:35:00,866807+07:00 LOG_EMERG LOG_FTP
diff --git a/tests/fixtures/dmesg/test_kmsg_time_format_notime.expected b/tests/fixtures/dmesg/test_kmsg_time_format_notime.expected
new file mode 100644
index 0000000..e16d233
--- /dev/null
+++ b/tests/fixtures/dmesg/test_kmsg_time_format_notime.expected
@@ -0,0 +1,5 @@
+LOG_EMERG LOG_AUTH
+LOG_EMERG LOG_AUTHPRIV
+LOG_EMERG LOG_CRON
+LOG_EMERG LOG_DAEMON
+LOG_EMERG LOG_FTP
diff --git a/tests/fixtures/dmesg/test_kmsg_time_format_raw.expected b/tests/fixtures/dmesg/test_kmsg_time_format_raw.expected
new file mode 100644
index 0000000..df70bd8
--- /dev/null
+++ b/tests/fixtures/dmesg/test_kmsg_time_format_raw.expected
@@ -0,0 +1,5 @@
+[    0.000000] LOG_EMERG LOG_AUTH
+[    0.500000] LOG_EMERG LOG_AUTHPRIV
+[    0.333333] LOG_EMERG LOG_CRON
+[    1.000000] LOG_EMERG LOG_DAEMON
+[   48.000000] LOG_EMERG LOG_FTP
diff --git a/tests/fixtures/dmesg/test_kmsg_time_format_reltime.expected b/tests/fixtures/dmesg/test_kmsg_time_format_reltime.expected
new file mode 100644
index 0000000..6cebd19
--- /dev/null
+++ b/tests/fixtures/dmesg/test_kmsg_time_format_reltime.expected
@@ -0,0 +1,5 @@
+[Nov18 19:34] LOG_EMERG LOG_AUTH
+[  +0.000000] LOG_EMERG LOG_AUTHPRIV
+[  -0.166667] LOG_EMERG LOG_CRON
+[  +0.666667] LOG_EMERG LOG_DAEMON
+[Nov18 19:35] LOG_EMERG LOG_FTP