Predictable problems with 3-character time zones, especially the EST/EST5EDT split.

Paul Eggert eggert at CS.UCLA.EDU
Tue Dec 19 21:35:39 UTC 2006


John Stainforth <STAIN at uk.ibm.com> writes:

> Our understanding is that:
>
> a) Before tzdata2005r... "EST" refers to the zone that is GMT-5 in Winter
> and GMT-4 in Summer, then ....
> b) Effective from tzdata2005r, "EST" refers only to some special area(s)
> within the Eastern region that are GMT-5 all the year round.

That sounds right as far as Java is concerned.  But it's not a
property of tzdata, it's a property of Java.  As far as the tz
database is concerned, TZ="EST" has never given you daylight-saving
time.

Here's the history.  Before tzdata2005m, there was no TZ="EST" in the
tz database.  But we had a desire to support the old 1980s System V TZ
names, "EST" being one of them, where "EST" was used in Indiana and
meant eastern time with no daylight saving.  I don't now recall why we
were so focused on being backward-compatible with a long-dead system,
but hey! we try hard to be backward-compatible.

So, in tzdata2005m through tzdata2005q, TZ="EST" was implemented as an
alias for America/Panama in the "backward" file, under the theory that
Panama has observed UTC-5 since standard time was introduced in 1908.
But this isn't satisfactory, as it mishandles time stamps before 1908,
and maybe Panama will observe DST some day.  So in tzdata2005r "EST"
was given a zone in its own right, in the "northamerica" file.

I suspect Java picked "EST" up only in 2005r because Java ignores the
"backward" file.

In retrospect perhaps we should have omitted these System V names, as
they're now causing more trouble with Java than they're worth.

Or perhaps we should move them to the "systemv" file now.  But
that is Arthur's call.

>From the Java point of view, I would simply remove all the System V
names from Java.  I don't see the point of them; they just cause
trouble.  That is, I would pretend that the following entries don't
exist in the "northamerica" file, so that you can continue with the
traditional Java interpretation for them.

# Zone  NAME            GMTOFF  RULES   FORMAT  [UNTIL]
Zone    EST              -5:00  -       EST
Zone    MST              -7:00  -       MST
Zone    HST             -10:00  -       HST
Zone    EST5EDT          -5:00  US      E%sT
Zone    CST6CDT          -6:00  US      C%sT
Zone    MST7MDT          -7:00  US      M%sT
Zone    PST8PDT          -8:00  US      P%sT



More information about the tz mailing list