This series aims to extend support for ISO-8601 datetime format to allow compact version, and fractional part of ISO-8601. Đoàn Trần Công Danh (2): date.c: skip fractional second part of ISO-8601 date.c: allow compact version of ISO-8601 datetime Documentation/date-formats.txt | 2 +- date.c | 24 ++++++++++++++++++++++++ t/t0006-date.sh | 5 +++++ 3 files changed, 30 insertions(+), 1 deletion(-) Range-diff against v1: 1: d7d74b03cc ! 1: 03f3e9968b date.c: allow fractional second part of ISO-8601 @@ Metadata Author: Đoàn Trần Công Danh <congdanhqx@xxxxxxxxx> ## Commit message ## - date.c: allow fractional second part of ISO-8601 + date.c: skip fractional second part of ISO-8601 git-commit(1) says ISO-8601 is one of our supported date format. - However, we only support RFC-3339 date format. - We can either: - - Update documentation from ISO-8601 to RFC-3339 - - Add full support for ISO-8601 + ISO-8601 allows timestamps to have a fractional number of seconds. + We represent time only in terms of whole seconds, so we never bothered + parsing fractional seconds. However, it's better for us to parse and + throw away the fractional part than to refuse to parse the timestamp + at all. - This series will try to add full support for ISO-8601. + And refusing parsing fractional second part may confuse the parse to + think fractional and timezone as day and month in this example: + + 2008-02-14 20:30:45.019-04:00 Reported-by: Brian M. Carlson <sandals@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Đoàn Trần Công Danh <congdanhqx@xxxxxxxxx> + ## Documentation/date-formats.txt ## +@@ Documentation/date-formats.txt: RFC 2822:: + ISO 8601:: + Time and date specified by the ISO 8601 standard, for example + `2005-04-07T22:13:13`. The parser accepts a space instead of the +- `T` character as well. ++ `T` character as well. The fractional part will be ignored. + + + NOTE: In addition, the date part is accepted in the following formats: + `YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`. + ## date.c ## @@ date.c: static int match_multi_number(timestamp_t num, char c, const char *date, case ':': @@ t/t0006-date.sh: check_parse 2008-02 bad check_parse 2008-02-14 bad check_parse '2008-02-14 20:30:45' '2008-02-14 20:30:45 +0000' check_parse '2008-02-14 20:30:45 -0500' '2008-02-14 20:30:45 -0500' ++check_parse '2008.02.14 20:30:45 -0500' '2008-02-14 20:30:45 -0500' +check_parse '2008-02-14 20:30:45.019-04:00' '2008-02-14 20:30:45 -0400' check_parse '2008-02-14 20:30:45 -0015' '2008-02-14 20:30:45 -0015' check_parse '2008-02-14 20:30:45 -5' '2008-02-14 20:30:45 +0000' 2: 48284386c9 < -: ---------- date.c: allow compact version of ISO-8601 datetime -: ---------- > 2: 36517af872 date.c: allow compact version of ISO-8601 datetime -- 2.26.0.485.g42af89717d