[tz] Posix time zone question
Donald MacQueen
dmacq at erols.com
Sat Jan 14 15:30:20 UTC 2012
On 1/11/2012 4:57 PM, Zefram wrote:
> Donald MacQueen wrote:
>> 1) What is the difference between America/Detroit and posix/America/Detroit?
> They're the same thing, but you're not meant to use names starting
> "posix/" as timezone names. The "posix/" prefix is concerned with two
> different ways a time_t value can be interpreted for post-1972 times:
> the posix/ files are for the standard way, where time_t encodes a UTC
> timestamp, and the right/ files are for an alternative, where time_t
> counts UTC seconds linearly. The two differ around leap seconds.
>
> Short version: you want the posix/ files, don't touch right/ unless
> you understood the above, and the timezone is named "America/Detroit"
> and not "posix/America/Detroit".
Tight. I understand that right/ has leap seconds in it and my code will
deal with that.
But if posix/America/Detroit and America/Detroit are the same, what is
the point of even having posix/America/Detroit?
I have sent you some AIX output off list. Thanks for your help.
>
>> 2) Where is the format of the tz source filesdescribed?
> Not formally described anywhere. zic.c is canonical in interpreting it,
> but it's not the easiest code to read.
>
>> SAVE and Letter/S mean below?
> SAVE says how far ahead of the zone's "standard" time clocks should be set
> for the period covered by that rule. SAVE=1:00 is the usual DST value,
> and SAVE=0:00 means DST is not in effect.
>
> LETTER/S provides some letters that can be included in the zone
> abbreviation specified by FORMAT. The US rules have letters "S" for
> standard and "D" for DST, and America/Detroit specifies format "E%sT",
> yielding abbreviations "EST" and "EDT". Many zones don't use this
> facility, and put a complete abbreviation into FORMAT.
>
>> I am also interested in what the Link format is.
> A Link means that two zone names are synonymous. E.g., "Link
> America/Denver America/Shiprock" defines America/Shiprock as an alias
> for America/Denver; America/Denver is described elsewhere in the file.
>
>> 3) AIX machines use their own wacky format such at TZ=EST5EDT. Is there any
>> decent mapping to real names?
> "EST5EDT" is a POSIX standard format for $TZ, specifying standard and
> DST offsets and abbreviations. It can (and should) have a further
> clause added to specify a rule for transition dates, but it's only
> a single rule for all years. Olson tzfiles (in version 2) actually
> use this format internally, to specify how to handle dates beyond
> the enumerated transitions; you can pull this data out with "tail -n1
> /usr/share/zoneinfo/America/Detroit", for example.
>
> In general a POSIX-format $TZ value cannot be converted to an Olson
> zone name, because it's ambiguous. For example, "EST5EDT" (even
> with the transition rule) is ambiguous between America/Detroit and
> America/New_York, which behave differently in the past.
>
> However, AIX is a little more complicated. For certain
> specifically-recognised POSIX-format $TZ values, lacking explicit DST
> transition rules, it knows the proper transition rule for some civil
> timezone that has a nearly-matching offset and abbreviation. Actually
> the abbreviations in the zone name often don't match the abbreviations
> actually used in those civil timezones, and in some cases the offset
> is wrong. I looked into this a few months ago, and came up with this
> translation table, which I believe covers all the special AIX values:
>
> AIX value means
> CUT0GDT CUT0
> GMT0BST Europe/London
> WET0WEST WET
> AZOREST1AZOREDT Atlantic/Azores
> FALKST2FALKDT Atlantic/Stanley
> GRNLNDST3GRNLNDDT America/Godthab
> AST4ADT America/Campo_Grande
> EST5EDT America/New_York
> CST6CDT America/Chicago
> MST7MDT America/Denver
> PST8PDT America/Los_Angeles
> AST9ADT America/Anchorage
> HST10HDT Pacific/Honolulu
> BST11BDT America/Adak
> NZST-12NZDT Pacific/Auckland
> MET-11METDT Pacific/Guadalcanal
> EET-10EETDT Australia/Sydney
> JST-9JSTDT Asia/Tokyo
> KORST-9KORDT Asia/Seoul
> WAUST-8WAUDT Australia/Perth
> TAIST-8TAIDT Asia/Taipei
> THAIST-7THAIDT Asia/Bangkok
> TASHST-6TASHDT Asia/Tashkent
> PAKST-5PAKDT Asia/Karachi
> WST-4WDT Asia/Muscat
> MEST-3MEDT Europe/Istanbul
> SAUST-3SAUDT Asia/Riyadh
> EET-2EEST EET
> USAST-2USADT Africa/Johannesburg
> CET-1CEST CET
>
> The "CUT0" meaning is actually another POSIX $TZ value, not an Olson name,
> and it refers to constant UT+0h, with no DST, and constant abbreviation
> "CUT". In some cases the choice of Olson zone is a bit arbitrary, such
> as for America/New_York. Not having an AIX system myself, I'm not clear
> on whether AIX implements the historical progression of DST rules for each
> zone, which would distinguish the ambiguous cases. I'm likewise not clear
> whether, where the abbreviations are wrong, AIX uses the abbreviation
> in the zone name (as POSIX requires) or uses the correct abbreviation.
>
> I'd be interested to see the results of "zdump -v" on AIX for its special
> zone names. Best mail me off-list if you acquire this output, because
> it'll be a bit big.
>
> I understand that recent AIX supports Olson zones, so you shouldn't need
> to stick with "EST5EDT"-like names.
>
> -zefram
>
--
Donald [|]
A bad day in [] is better than a good day in {}
More information about the tz
mailing list