]> git.ipfire.org Git - thirdparty/git.git/commit
date.c: allow ISO 8601 reduced precision times
authorĐoàn Trần Công Danh <congdanhqx@gmail.com>
Wed, 11 Jan 2023 00:10:03 +0000 (07:10 +0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 13 Jan 2023 19:49:04 +0000 (11:49 -0800)
commitb56be49984de166db6270c59e83f89d3608ddc69
tree14855af1e412ccb3b6a6aadaadd6aef9bd6a1126
parenta38d39a4c50d1275833aba54c4dbdfce9e2e9ca1
date.c: allow ISO 8601 reduced precision times

ISO 8601 permits "reduced precision" time representations to omit the
seconds value or both the minutes and the seconds values.  The
abbreviate times could look like 17:45 or 1745 to omit the seconds,
or simply as 17 to omit both the minutes and the seconds.

parse_date_basic accepts the 17:45 format but it rejects the other two.
Change it to accept 4-digit and 2-digit time values when they follow a
recognized date and a 'T'.

Before this change:

$ TZ=UTC test-tool date approxidate 2022-12-13T23:00 2022-12-13T2300 2022-12-13T23
2022-12-13T23:00 -> 2022-12-13 23:00:00 +0000
2022-12-13T2300 -> 2022-12-13 23:54:13 +0000
2022-12-13T23 -> 2022-12-13 23:54:13 +0000

After this change:

$ TZ=UTC helper/test-tool date approxidate 2022-12-13T23:00 2022-12-13T2300 2022-12-13T23
2022-12-13T23:00 -> 2022-12-13 23:00:00 +0000
2022-12-13T2300 -> 2022-12-13 23:00:00 +0000
2022-12-13T23 -> 2022-12-13 23:00:00 +0000

Note: ISO 8601 also allows reduced precision date strings such as
"2022-12" and "2022". This patch does not attempt to address these.

Reported-by: Pat LaVarre <plavarre@purestorage.com>
Signed-off-by: Phil Hord <phil.hord@gmail.com>
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
date.c
t/t0006-date.sh