[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