[PATCH 1/2] UNIX reference time of 1970-01-01 00:00 is UTC timezone, not local time zone
- From
- Andy Parkins <andyparkins@gmail.com>
- Date
- Jan 26, 2007, 08:58 UTC
- Message-ID
- <200701260858.48212.andyparkins@gmail.com>
I got bitten because in the UK (where one would expect 1970-01-01 00:00 to be UTC 0) some politicians decided to mess around with daylight savings time from 1968 to 1971; it was permanently BST (+0100). That means that on my computer the following is true:
$ date --date="1970-01-01 00:00" +"%F %T %z (%Z)" 1970-01-01 00:00:00 +0100 (BST)
This of course means that the --date argument to date is specified in local time, not UTC. So when the hooks--update script does this:
date=$(date --date="1970-01-01 00:00:00 +0000 $ts seconds")
It's actually saying (in my timezone) "1970-01-01 01:00:00 UTC" + $ts. Clearly this is wrong. The UNIX epoch started at midnight UTC not 1am UTC.
This leads to the tagged time in hooks--update being shown as one hour earlier than the true tagged time (in my timezone). The problem would be worse for other timezones. For a +1300 timezone on 1970-01-01, the tagged time would be 13 hours earlier. Oops.
The solution is to force the reference time to UTC, which is what this patch does. In my timezone:
$ date --date="1970-01-01 00:00 +0000" +"%F %T %z (%Z)" 1970-01-01 01:00:00 +0100 (BST)
Much better.
Signed-off-by: Andy Parkins <andyparkins@gmail.com> --- templates/hooks--update | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/templates/hooks--update b/templates/hooks--update index 9863a80..81f706f 100644 --- a/templates/hooks--update +++ b/templates/hooks--update @@ -46,7 +46,7 @@ then if [ "$ref_type" = tag ]; then eval $(git cat-file tag $3 | \ sed -n '4s/tagger \([^>]*>\)[^0-9]*\([0-9]*\).*/tagger="\1" ts="\2"/p') - date=$(date --date="1970-01-01 00:00:00 $ts seconds" +"$date_format") + date=$(date --date="1970-01-01 00:00:00 +0000 $ts seconds" +"$date_format") echo "Tag '$tag' created by $tagger at $date" git cat-file tag $3 | sed -n '5,$p' echo
-- 1.5.0.rc2.g017f3