EST5EDT etc. no longer have UT offsets or abbreviations
disagreeing with POSIX.
* Makefile (now.ck): Don’t check System V zones in ‘backward’.
* NEWS: Mention the change.
* backward (CST6CDT, EST5EDT, MST7MDT, PST8PDT): Now Zones not Links.
(USback): New Rule.
* backzone (PST8PDT, MST7MDT, CST6CDT, EST5EDT): Remove, as they
no longer differ from ‘backward’ except in ways that do not
conform to POSIX.
* theory.html: Adjust description of ‘backward’ accordingly.
---
Makefile | 11 ++++++++---
NEWS | 8 ++++++++
backward | 54 ++++++++++++++++++++++++++++++++++++++++++++++++-----
backzone | 4 ----
theory.html | 9 ++++-----
5 files changed, 69 insertions(+), 17 deletions(-)
diff --git a/Makefile b/Makefile
index 39a6798a..5d463b74 100644
--- a/Makefile
+++ b/Makefile
@@ -172,9 +172,9 @@ EXPIRES_LINE= 0
TZDATA_TEXT= leapseconds tzdata.zi
-# For backward-compatibility links for old zone names, use
+# For backward-compatibility links and zones for old names, use
# BACKWARD= backward
-# To omit these links, use
+# To omit these links and zones, use
# BACKWARD=
BACKWARD= backward
@@ -1018,7 +1018,12 @@ now.ck: checknow.awk date tzdata.zi zdump zic
zone1970.tab zonenow.tab
-v zdump_table=$@d/zdump-now.tab \
-f checknow.awk zonenow.tab
$(AWK) \
- 'BEGIN {print "-\t-\tUTC"} /^Zone/ {print "-\t-\t" $$2}' \
+ 'BEGIN { \
+ SysVzone["EST5EDT"] = 1; SysVzone["CST6CDT"] = 1; \
+ SysVzone["MST7MDT"] = 1; SysVzone["PST8PDT"] = 1; \
+ print "-\t-\tUTC" \
+ } \
+ $$1 == "Zone" && !SysVzone[$$2] {print "-\t-\t" $$2}' \
$(PRIMARY_YDATA) backward factory | \
$(AWK) \
-v zdump_table=$@d/zdump-1970.tab \
diff --git a/NEWS b/NEWS
index f61c76be..3c2fbb76 100644
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,14 @@ Unreleased, experimental changes
Colombia’s 1992-05-02 spring forward was at 00:00, not 24:00.
+ The backward-compatibility names EST5EDT, CST6CDT, MST7MDT, and
+ PST8PDT now conform better to POSIX. For example, EST5EDT now
+ always uses the abbreviation "EST" for standard time (now always 5
+ hours behind UT) and "EDT" for daylight saving time, whereas it
+ formerly had different UT offsets before standard time was
+ introduced and sometimes used abbreviations like "LMT", "EWT" and
+ "EPT", all contrary to POSIX.
+
Changes to code
zic now rejects Link targets that would have invalid names.
diff --git a/backward b/backward
index 0236751d..2971d038 100644
--- a/backward
+++ b/backward
@@ -15,7 +15,8 @@
# typically use this file for backward compatibility.
# This file is divided into sections, one for each major reason for a
-# backward compatibility link. Each section is sorted by link name.
+# backward compatibility link or zone. Each section of links is
+# sorted by name.
# A "#= TARGET1" comment labels each link inserted only because some
# .zi parsers (including tzcode through 2022e) mishandle links to links.
@@ -46,7 +47,6 @@ Link America/Noronha Brazil/DeNoronha
Link America/Sao_Paulo Brazil/East
Link America/Manaus Brazil/West
Link Europe/Brussels CET
-Link America/Chicago CST6CDT
Link America/Halifax Canada/Atlantic
Link America/Winnipeg Canada/Central
# This line is commented out, as the name exceeded the 14-character limit
@@ -63,7 +63,6 @@ Link Pacific/Easter Chile/EasterIsland
Link America/Havana Cuba
Link Europe/Athens EET
Link America/Panama EST
-Link America/New_York EST5EDT
Link Africa/Cairo Egypt
Link Europe/Dublin Eire
# Vanguard section, for most .zi parsers.
@@ -104,7 +103,6 @@ Link Pacific/Kwajalein Kwajalein
Link Africa/Tripoli Libya
Link Europe/Brussels MET
Link America/Phoenix MST
-Link America/Denver MST7MDT
Link America/Tijuana Mexico/BajaNorte
Link America/Mazatlan Mexico/BajaSur
Link America/Mexico_City Mexico/General
@@ -326,6 +324,52 @@ Link Europe/Kyiv Europe/Kiev
# However, for various reasons many users expect to find it under Europe.
Link Asia/Nicosia Europe/Nicosia
Link Pacific/Honolulu HST
-Link America/Los_Angeles PST8PDT
Link Pacific/Guadalcanal Pacific/Ponape #= Pacific/Pohnpei
Link Pacific/Port_Moresby Pacific/Truk #= Pacific/Chuuk
+
+
+# The backward-compatibility zones PST8PDT, MST7MDT, CST6CDT, and EST5EDT
+
+# Near-copy of US rules in the northamerica file,
+# so that this file can be compiled separately.
+# To conform to POSIX, this copy uses D instead of W for War and P for Peace.
+# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+Rule USback 1918 1919 - Mar lastSun 2:00 1:00 D
+Rule USback 1918 1919 - Oct lastSun 2:00 0 S
+Rule USback 1942 only - Feb 9 2:00 1:00 D # War
+Rule USback 1945 only - Aug 14 23:00u 1:00 D #
Peace
+Rule USback 1945 only - Sep 30 2:00 0 S
+Rule USback 1967 2006 - Oct lastSun 2:00 0 S
+Rule USback 1967 1973 - Apr lastSun 2:00 1:00 D
+Rule USback 1974 only - Jan 6 2:00 1:00 D
+Rule USback 1975 only - Feb lastSun 2:00 1:00 D
+Rule USback 1976 1986 - Apr lastSun 2:00 1:00 D
+Rule USback 1987 2006 - Apr Sun>=1 2:00 1:00 D
+Rule USback 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule USback 2007 max - Nov Sun>=1 2:00 0 S
+
+# From Arthur David Olson (2005-12-19):
+# We generate the files specified below to guard against old files with
+# obsolete information being left in the time zone binary directory.
+# We limit the list to names that have appeared in previous versions of
+# this time zone package.
+# We do these as separate Zones rather than as Links to avoid problems if
+# a particular place changes whether it observes DST.
+#
+# From Paul Eggert (2026-07-24):
+# These zones are for backward compatibility with Unix System V (1983).
+# They are ahistorical, in that they pretend standard time extends
+# backward indefinitely into the past.
+# They use USback (not US) rules so that they conform to POSIX instead
+# of using abbreviations like EWT for Eastern War Time during World War II.
+# The zones are here, not in the northamerica file, to lessen
+# confusion downstream by making it clear that the zones are present
+# only for backward compatibility.
+# New software should use settings like TZ='America/New_York' instead
+# of these backwards-compatibility zones.
+#
+# Zone NAME STDOFF RULES FORMAT [UNTIL]
+Zone PST8PDT -8:00 USback P%sT
+Zone MST7MDT -7:00 USback M%sT
+Zone CST6CDT -6:00 USback C%sT
+Zone EST5EDT -5:00 USback E%sT
diff --git a/backzone b/backzone
index b7fd57bf..e3ec2032 100644
--- a/backzone
+++ b/backzone
@@ -1836,12 +1836,8 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
# Zone NAME STDOFF RULES FORMAT [UNTIL]
Zone HST -10:00 - HST
-Zone PST8PDT -8:00 US P%sT
Zone MST -7:00 - MST
-Zone MST7MDT -7:00 US M%sT
-Zone CST6CDT -6:00 US C%sT
Zone EST -5:00 - EST
-Zone EST5EDT -5:00 US E%sT
Zone WET 0:00 EU WE%sT
Zone CET 1:00 C-Eur CE%sT
Zone MET 1:00 C-Eur ME%sT
diff --git a/theory.html b/theory.html
index 8f76aaf0..bbc9d693 100644
--- a/theory.html
+++ b/theory.html
@@ -345,8 +345,7 @@ These legacy names are mostly defined in the file
"<code>etcetera</code>".
Also, the file "<code>backward</code>" defines the legacy names
<code>Etc/GMT0</code>, <code>Etc/GMT-0</code>, <code>Etc/GMT+0</code>,
-<code>GMT0</code>, <code>GMT-0</code> and <code>GMT+0</code>,
-and the file "<code>northamerica</code>" defines the legacy names
+<code>GMT0</code>, <code>GMT-0</code>, <code>GMT+0</code>,
<code>EST5EDT</code>, <code>CST6CDT</code>,
<code>MST7MDT</code>, and <code>PST8PDT</code>.
</li>
@@ -387,11 +386,11 @@ and <code>zone.tab</code>.
<p>
The database defines each timezone name to be a zone, or a link to a zone.
-The source file <code>backward</code> defines links for backward
-compatibility; it does not define zones.
+The source file <code>backward</code> defines links
+and a few zones for backward compatibility.
Although <code>backward</code> was originally designed to be optional,
nowadays distributions typically use it
-and no great weight should be attached to whether a link
+and no great weight should be attached to whether a link or zone
is defined in <code>backward</code> or in some other file.
The source file <code>etcetera</code> defines names that may be useful
on platforms that do not support proleptic <code>TZ</code> strings
--
2.53.0