Re: [PATCH 3/3] gitk: Allow displaying time zones from author and commit timestamps
On Mon, 30 May 2011, Jakub Narebski wrote:
> > > Why not use UTC+N timezone […]?
>
> I think full specification is UTC+HH:MM or UTC-HH:MM. GNU date
> understands 'TZ=UTC+09:30 date'.
No, that’s not what the letter code in TZ means. TZ=EDT+04:00 means that
• The current time zone is called EDT.
• The current time zone is at offset -04:00 from UTC. (Note the sign
reversal.)
EDT is displayed as the name of the zone and is not used in any
calculations; it does not mean we’re taking an offset _from_ EDT.So it doesn’t make sense to write TZ=UTC±NN:NN for any NN:NN other than
00:00. Otherwise libc will happily give you the nonsense that you asked
for:
$ TZ=UTC+00:00 date; TZ=UTC+09:30 date
Mon May 30 21:21:32 UTC 2011
Mon May 30 11:51:32 UTC 2011
This is why I used “Unknown” instead of “UTC”.
(Oh, my comment should have said “Unknown±NN:NN” instead of “Unknown±NNNN”; the code gets it right.)
If I wanted to do better, I’d need a way to translate UTC offsets to zone names, but I don’t know of a canonical way to do that (there’s not even a unique answer in general).
In Tcl ≥ 8.5, none of this matters because ‘clock format -timezone’ just uses the numerical UTC offset as the zone name. For the fallback code, I can’t do that by manipulating TZ, because the zone name needs to be made of letters.
Anders