mirror of
https://github.com/git-for-windows/git.git
synced 2026-06-13 00:50:13 -05:00
The Git internal date format `<unix-timestamp> <time-zone-offset>`
fails to parse when the timestamp is less than 100,000,000 (fewer than
9 digits). This happens to avoid potential ambiguity with other date
formats such as `YYYYMMDD`, especially when used with approxidate.
To force the parser to interpret the value as a raw timestamp, it must
be prefixed with `@` (e.g., `@0 +0000`). This behavior was introduced
in 2c733fb24c (parse_date(): '@' prefix
forces git-timestamp, 2012-02-02) but was never documented.
Document the `@` prefix in `Documentation/date-formats.adoc` to make
this behavior explicit. Also add test cases to `t/t0006-date.sh` to
verify and demonstrate the difference between prefixed and unprefixed
small timestamps (e.g., `@2000` vs `2000`).
Signed-off-by: Luna Schwalbe <dev@luna.gl>
Co-authored-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
37 lines
1.4 KiB
Plaintext
37 lines
1.4 KiB
Plaintext
DATE FORMATS
|
|
------------
|
|
|
|
The `GIT_AUTHOR_DATE` and `GIT_COMMITTER_DATE` environment variables
|
|
support the following date formats:
|
|
|
|
Git internal format::
|
|
It is `<unix-timestamp> <time-zone-offset>`, where
|
|
`<unix-timestamp>` is the number of seconds since the UNIX epoch.
|
|
`<time-zone-offset>` is a positive or negative offset from UTC.
|
|
For example CET (which is 1 hour ahead of UTC) is `+0100`.
|
|
+
|
|
It is safer to prepend the `<unix-timestamp>` with `@` (e.g.,
|
|
`@0 +0000`), which forces Git to interpret it as a raw timestamp. This
|
|
is required for values less than 100,000,000 (which have fewer than 9
|
|
digits) to avoid confusion with other date formats like `YYYYMMDD`.
|
|
|
|
RFC 2822::
|
|
The standard date format as described by RFC 2822, for example
|
|
`Thu, 07 Apr 2005 22:13:13 +0200`.
|
|
|
|
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. Fractional parts of a second will be ignored,
|
|
for example `2005-04-07T22:13:13.019` will be treated as
|
|
`2005-04-07T22:13:13`.
|
|
+
|
|
NOTE: In addition, the date part is accepted in the following formats:
|
|
`YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`.
|
|
|
|
ifdef::git-commit[]
|
|
In addition to recognizing all date formats above, the `--date` option
|
|
will also try to make sense of other, more human-centric date formats,
|
|
such as relative dates like "yesterday" or "last Friday at noon".
|
|
endif::git-commit[]
|