aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/xwrap.c1
-rw-r--r--tests/date.test4
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/xwrap.c b/lib/xwrap.c
index 1bc929f1..cf7fc42a 100644
--- a/lib/xwrap.c
+++ b/lib/xwrap.c
@@ -967,6 +967,7 @@ void xparsedate(char *str, time_t *t, unsigned *nano, int endian)
// Formats with seconds come first. Posix can't agree on whether 12 digits
// has year before (touch -t) or year after (date), so support both.
char *s = str, *p, *oldtz = 0, *formats[] = {"%Y-%m-%d %T", "%Y-%m-%dT%T",
+ "%a %b %e %H:%M:%S %Z %Y", // date(1) output format in POSIX/C locale.
"%H:%M:%S", "%Y-%m-%d %H:%M", "%Y-%m-%d", "%H:%M", "%m%d%H%M",
endian ? "%m%d%H%M%y" : "%y%m%d%H%M",
endian ? "%m%d%H%M%C%y" : "%C%y%m%d%H%M"};
diff --git a/tests/date.test b/tests/date.test
index 7dd125d7..9240131a 100644
--- a/tests/date.test
+++ b/tests/date.test
@@ -73,3 +73,7 @@ testing "tz +08" \
"date -u -d 2020-08-01T12:34:56+08" "Sat Aug 1 04:34:56 UTC 2020\n" "" ""
testing "tz +008" \
"date -u -d 2020-08-01T12:34:56+008" "Sat Aug 1 12:26:56 UTC 2020\n" "" ""
+
+# Can we parse date's own output format?
+testing "round trip" 'TZ=$tz date -d "$(TZ=$tz date -d @1598476818)"' \
+ "Wed Aug 26 23:20:18 CEST 2020\n" "" ""