git: 8f375ebd2071 - stable/14 - contrib/tzdata: import tzdata 2026f
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 31 Oct 2026 03:53:17 UTC
The branch stable/14 has been updated by philip:
URL: https://cgit.FreeBSD.org/src/commit/?id=8f375ebd2071338edb745af52699cbaa339fda62
commit 8f375ebd2071338edb745af52699cbaa339fda62
Author: Philip Paeps <philip@FreeBSD.org>
AuthorDate: 2026-10-28 14:46:33 +0000
Commit: Philip Paeps <philip@FreeBSD.org>
CommitDate: 2026-10-31 02:34:03 +0000
contrib/tzdata: import tzdata 2026f
Changes: https://github.com/eggert/tz/blob/2026f/NEWS
(cherry picked from commit 5a2e900390155ca00ca321230e498f94d449eff5)
---
contrib/tzdata/Makefile | 20 +++++---
contrib/tzdata/NEWS | 113 ++++++++++++++++++++++++++++++++++-------
contrib/tzdata/backzone | 40 ---------------
contrib/tzdata/leapseconds | 24 ++++-----
contrib/tzdata/leapseconds.awk | 39 +++++---------
contrib/tzdata/northamerica | 73 +++++++++++++++++---------
contrib/tzdata/southamerica | 35 +++++++++----
contrib/tzdata/theory.html | 38 +++++++-------
contrib/tzdata/version | 2 +-
9 files changed, 226 insertions(+), 158 deletions(-)
diff --git a/contrib/tzdata/Makefile b/contrib/tzdata/Makefile
index 96a7462e9a28..06b758eff234 100644
--- a/contrib/tzdata/Makefile
+++ b/contrib/tzdata/Makefile
@@ -129,6 +129,9 @@ TIME_T_ALTERNATIVES_TAIL = int_least32_t.ck uint_least32_t.ck \
# What kind of TZif data files to generate. (TZif is the binary time
# zone data format that zic generates; see Internet RFC 9636.)
+# Although TZif files with leap second info are rarely used and the last
+# leap second was in 2016, they are still supported for compatibility
+# with historical timestamps generated via TZif files with leap seconds.
# If you want only POSIX time, with time values interpreted as
# seconds since the epoch (not counting leap seconds), use
# REDO= posix_only
@@ -151,14 +154,17 @@ TIME_T_ALTERNATIVES_TAIL = int_least32_t.ck uint_least32_t.ck \
REDO= posix_only
# Whether to put an "Expires" line in the leapseconds file.
-# Use EXPIRES_LINE=1 to put the line in, 0 to omit it.
-# The EXPIRES_LINE value matters only if REDO's value contains "right".
+# Use EXPIRES_LINE=1 to put the "Expires" line in, 0 to omit it.
+# This variable is obsolescent and should be removed in a future release.
+# It defaults to 0 because the circa 2020 effort to support it
+# became obsolete after the 2026 decision to discontinue leap seconds.
+# The EXPIRES_LINE value does not affect the contents of TZif files;
+# it affects only the leapseconds file itself, so it matters only if
+# the leapseconds file is used directly by third-party software.
# If you change EXPIRES_LINE, remove the leapseconds file before running "make".
# zic's support for the Expires line was introduced in tzdb 2020a,
-# and was modified in tzdb 2021b to generate version 4 TZif files.
-# EXPIRES_LINE defaults to 0 for now so that the leapseconds file
-# can be given to pre-2020a zic implementations and so that TZif files
-# built by newer zic implementations can be read by pre-2021b libraries.
+# was modified in tzdb 2021b to generate version 4 TZif files,
+# and was removed after tzdb 2026e was released.
EXPIRES_LINE= 0
# To install data in text form that has all the information of the TZif data,
@@ -317,6 +323,8 @@ LDLIBS=
# It also costs CPU time and memory.
# -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t
# This is intended for internal use only; it mangles external names.
+# -DMIN_TRANSITION_GAP=N to reject TZif files containing transitions
+# separated by fewer than N seconds. See localtime.c.
# -DTZ_CHANGE_INTERVAL=N if functions depending on TZ should check
# no more often than every N seconds for TZif file changes.
# If N is negative (the default), no such checking is done.
diff --git a/contrib/tzdata/NEWS b/contrib/tzdata/NEWS
index fe2d7c62b624..7a05dc32ebe6 100644
--- a/contrib/tzdata/NEWS
+++ b/contrib/tzdata/NEWS
@@ -1,5 +1,66 @@
News for the tz database
+Release 2026f - 2026-10-27 23:16:49 -0700
+
+ Briefly:
+ Cuba will not fall back 2026-11-01; stays on -04 through 2027-11-07.
+ No more leap seconds, and leap second tables no longer expire.
+ Improve 1965/1966 data for Brazil.
+
+ Changes to future timestamps
+
+ Cuba will not fall back to -05 on 2026-11-01 and instead plans to
+ maintain -04 through 2027-11-07.
+
+ Changes to past timestamps
+
+ In 1965 Brazil ended DST on 03-31 at 24:00 not 00:00, and in 1966
+ it ended DST on 03-01 at 01:00 not 00:00. (Thanks to Daniel Dias
+ Rodrigues.)
+
+ Changes to code
+
+ zic now ignores Expires lines, as leap second tables in TZif files
+ no longer expire now that there are no more leap seconds;
+ see Internet RFC 9636 §3.2. (Thanks to Garrett Wollman for the
+ heads-up re no more leap seconds.)
+
+ localtime.c no longer supports 49 leap seconds, as 27 now suffice.
+ zic now warns if you go over the new limit.
+
+ A new compile-time flag -DMIN_TRANSITION_GAP=N specifies a minimum
+ transition gap of N seconds when reading TZif files. It currently
+ defaults to 0, but can be set to 1 if TZif files generated by zic
+ 2021b and earlier are no longer of concern.
+
+ With 32-bit time_t, localtime.c functions now check for transition
+ ordering in TZif data as carefully as they do with 64-bit time_t.
+ (Problem reported by Ana Bobillo.)
+
+ On platforms like FreeBSD that have O_RESOLVE_BENEATH but lack
+ O_REGULAR, localtime.c compiled with -DOPENAT_TZDIR now checks
+ that a TZ setting with ".." components names a regular file
+ before opening it in an unprivileged program, as it already did
+ for other settings that might name a file outside TZDIR.
+ This fixes a bug introduced in 2026c. (Thanks to Ana Bobillo.)
+
+ Changes to documentation and commentary
+
+ Documentation and commentary now reflect leap seconds’ demise.
+
+ Changes to commentary
+
+ Discussion on timekeeping in northwestern Ontario has been updated
+ to reflect that provincial regulation has been issued to allow these
+ areas to stay aligned with America/Winnipeg and follow Manitoba’s
+ adoption of year-round -05 after all. (Thanks to Aoun Khan,
+ Chris Walton, and Heitor David Pinto.)
+
+ Discussion on timekeeping in Saskatchewan has been updated to
+ document its new Time Act, 2026 which comes into force on
+ 2026-10-30. (Thanks to Heitor David Pinto.) No change is expected.
+
+
Release 2026e - 2026-09-29 17:14:38 -0700
Briefly:
@@ -12,7 +73,10 @@ Release 2026e - 2026-09-29 17:14:38 -0700
its traditional abbreviation EST. Although the change to
permanent -05 legally takes place on 2026-10-31, temporarily model
the change to occur on 2026-11-01 at 02:00 for the same reason as
- other recent temporary hacks. (Caution: see “NOTE FOR 2026b
+ other recent temporary hacks. This new temporary hack works
+ around a limitation in Unicode CLDR 48.2.2 (2026-09-21)
+ and ICU 78.3 (2026-03-17), and is planned to be removed after
+ CLDR and ICU are fixed. (Caution: see “NOTE FOR 2026
TEMPORARY HACK FOR CLDR AND CANADA” below.)
As the change affects both America/Winnipeg and its backward
@@ -22,7 +86,7 @@ Release 2026e - 2026-09-29 17:14:38 -0700
Another TZDB release may be needed soon if any of the portions of
northwestern Ontario historically aligned with America/Winnipeg do
- not follow. For now, given the short leadtime with Manitoba’s
+ not follow. For now, given the short lead time with Manitoba’s
announcement, assume that they will, to avoid creating new zones
that may not be needed if no divergence occurs.
@@ -52,8 +116,11 @@ Release 2026d - 2026-09-11 15:21:07 -0700
Model this with its traditional abbreviation CST. Although the
change to permanent -06 legally took place on 2026-08-21,
temporarily model the change to occur on 2026-11-01 at 02:00
- for the same reason as other recent temporary hacks. (Caution:
- see “NOTE FOR 2026b TEMPORARY HACK FOR CLDR AND CANADA” below.)
+ for the same reason as other recent temporary hacks.
+ This new temporary hack works around a limitation in Unicode CLDR
+ 48.2.1 (2026-07-08) and and ICU 78.3 (2026-03-17), and is planned
+ to be removed after CLDR and ICU are fixed. (Caution:
+ see “NOTE FOR 2026 TEMPORARY HACK FOR CLDR AND CANADA” below.)
This affects only America/Inuvik as the rest of the territory is
covered by America/Edmonton, for which the equivalent change was
released in 2026c.
@@ -135,8 +202,11 @@ Release 2026c - 2026-07-08 10:23:58 -0700
CST. Although the change to permanent -06 legally took place on
2026-06-18, temporarily model the change to occur on 2026-11-01 at
02:00 instead, for the same reason we introduced a similarly
- temporary hack for British Columbia in 2026b. (Caution: see
- “NOTE FOR 2026b TEMPORARY HACK FOR CLDR AND CANADA” below.)
+ temporary hack for British Columbia in 2026b. This new temporary
+ hack works around a limitation in Unicode CLDR 48.1 (2026-01-08)
+ and ICU 78.2 (2025-01-30), and is planned to be removed after CLDR
+ and ICU are fixed. (Caution: see “NOTE FOR 2026 TEMPORARY HACK
+ FOR CLDR AND CANADA” below.)
As the change affects both America/Edmonton and its backward
compatibility link, the obsolescent setting TZ="Canada/Mountain"
@@ -202,9 +272,10 @@ Release 2026b - 2026-04-22 23:06:43 -0700
foreseeable clock change, as it moved to permanent -07 thereafter.
(Thanks to Arthur David Olson.) Although the change to permanent
-07 legally took place on 2026-03-09, temporarily model the change
- to occur on 2026-11-01 at 02:00 instead. This works around a
- limitation in CLDR 48.1 (2026-01-08). This temporary hack is
- planned to be removed after CLDR is fixed.
+ to occur on 2026-11-01 at 02:00 instead. This temporary hack
+ works around a limitation in Unicode CLDR 48 (2025-10-29) and
+ ICU 78 (2025-10-30), and is planned to be removed after CLDR and
+ ICU are fixed.
To match longstanding practice for -07 standard time in North
America, such as for America/Dawson, America/Dawson_Creek,
@@ -217,15 +288,15 @@ Release 2026b - 2026-04-22 23:06:43 -0700
observing -07, and may change it to "-07" if no alphabetic
consensus emerges.
- Changes to code
+ NOTE FOR 2026 TEMPORARY HACK FOR CLDR AND CANADA:
- zic no longer mishandles a last transition to a new time type.
- NOTE FOR 2026b TEMPORARY HACK FOR CLDR AND CANADA:
- This zic fix is needed for the temporary hack (mentioned above)
- that works around the Canadian timekeeping bug in Unicode CLDR.
- Without the fix, the temporary hack causes zic versions 2023d
- through 2026a, in their default mode that generates slim output,
- to generate a TZif file that violates Internet RFC 9636 §3.3.
+ This temporary hack works around limitations in Unicode CLDR and
+ ICU, and is planned to be removed after CLDR and ICU are fixed.
+ See <https://cldr.unicode.org/downloads/cldr-48> and
+ <https://www.unicode.org/releases/> for 2026 changes there.
+ Unfortunately the temporary hack also causes zic in tzcode
+ 2023d through 2026a, in the default slim mode, to generate a
+ TZif file that does not conform to Internet RFC 9636 §3.3.
The buggy file in turn causes some TZif readers, including tzcode
itself, to ignore America/Vancouver’s 2026-11-01 02:00 transition
from PDT (tm_isdst=1) to MST (tm_isdst=0). Although the buggy
@@ -234,6 +305,10 @@ Release 2026b - 2026-04-22 23:06:43 -0700
data from more-recent tz releases. To work around this problem
when using these older zic versions, use ‘zic -b fat’.
+ Changes to code
+
+ zic no longer mishandles a last transition to a new time type.
+
zic no longer overflows a buffer when generating a TZ string like
"PST-167:59:58PDT-167:59:59,M11.5.6/-167:59:59,M12.5.6/-167:59:59",
which can occur with adversarial input. (Thanks to Naveed Khan.)
@@ -5318,9 +5393,9 @@ Release 2012a - 2012-03-01 18:28:10 +0700
foreseeable future, though 2012 is all we're fairly certain of.)
Armenia has abolished Summer Time.
Tokelau jumped the International Date Line back last December
- (just the same as their near neighbour, Samoa).
+ (just the same as their near neighbor, Samoa).
America/Creston is a new zone for a small area of British Columbia
- There will be a leapsecond 2012-06-30 23:59:60 UTC.
+ There will be a leap second 2012-06-30 23:59:60 UTC.
Other minor changes are:
Corrections to 1918 Canadian summer time end dates.
diff --git a/contrib/tzdata/backzone b/contrib/tzdata/backzone
index 8d11f2857ea8..10724500ca7e 100644
--- a/contrib/tzdata/backzone
+++ b/contrib/tzdata/backzone
@@ -1577,27 +1577,6 @@ Zone Europe/Tiraspol 1:58:32 - LMT 1880
2:00 Russia EE%sT 1992 Jan 19 2:00
3:00 Russia MSK/MSD
-# Ukraine
-#
-# Although Shanks & Pottenger say Transcarpathia used CET 1990/1991,
-# this unreliable source contradicts contemporaneous government resolutions
-# (see the commentary for Ukraine in the 'europe' file)
-# so for now this dubious zone is in 'backzone'.
-# "Uzhhorod" is the transliteration of the Ukrainian spelling, but
-# "Uzhgorod" was a common English spelling when this dubious zone was
-# added to TZDB in 1999.
-Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
- 1:00 - CET 1940
- 1:00 C-Eur CE%sT 1944 Oct
- 1:00 1:00 CEST 1944 Oct 26
- 1:00 - CET 1945 Jun 29
- 3:00 Russia MSK/MSD 1990
- 3:00 - MSK 1990 Jul 1 2:00
- 1:00 - CET 1991 Mar 31 3:00
- 2:00 - EET 1992 Mar 20
- 2:00 C-Eur EE%sT 1996 May 13
- 2:00 EU EE%sT
-
# Liechtenstein
# From Paul Eggert (2022-07-21):
@@ -1620,25 +1599,6 @@ Zone Europe/Zagreb 1:03:52 - LMT 1884
1:00 - CET 1982 Nov 27
1:00 EU CE%sT
-# Ukraine
-
-# Although Shanks & Pottenger say Zaporizhzhia and eastern Lugansk
-# observed DST 1990/1991, this unreliable source contradicts contemporaneous
-# government resolutions (see the commentary for Ukraine in the 'europe' file)
-# so for now this dubious zone is in 'backzone'.
-# "Zaporizhzhia" is the transliteration of the Ukrainian name, but
-# "Zaporozhye" was a common English spelling when this dubious zone was
-# added to TZDB in 1999.
-Zone Europe/Zaporozhye 2:20:40 - LMT 1880
- 2:20 - +0220 1924 May 2
- 2:00 - EET 1930 Jun 21
- 3:00 - MSK 1941 Aug 25
- 1:00 C-Eur CE%sT 1943 Oct 25
- 3:00 Russia MSK/MSD 1991 Mar 31 2:00
- 2:00 E-Eur EE%sT 1992 Mar 20
- 2:00 C-Eur EE%sT 1996 May 13
- 2:00 EU EE%sT
-
# Madagascar
Zone Indian/Antananarivo 3:10:04 - LMT 1911 Jul
3:00 - EAT 1954 Feb 27 23:00s
diff --git a/contrib/tzdata/leapseconds b/contrib/tzdata/leapseconds
index 1fc7b8e880b3..be50d08da975 100644
--- a/contrib/tzdata/leapseconds
+++ b/contrib/tzdata/leapseconds
@@ -1,4 +1,4 @@
-# Allowance for leap seconds added to each time zone file.
+# Leap seconds (1972-2016) optionally added to TZif files.
# This file is in the public domain.
@@ -6,7 +6,7 @@
# NIST/IERS format leap-seconds.list file, which can be copied from
# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list>
# or via a less-secure protocol and with different comments and
-# less volatile last-modified and expiration timestamps, from
+# less volatile timestamp metadata, from
# <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>.
# For more about leap-seconds.list, please see
# The NTP Timescale and Leap Seconds
@@ -18,10 +18,8 @@
# (ITU-R) Recommendation TF.460-6 (02/2002)
# <https://www.itu.int/rec/R-REC-TF.460-6-200202-I/>.
# The International Earth Rotation and Reference Systems Service (IERS)
-# periodically uses leap seconds to keep UTC to within 0.9 s of UT1
-# (a proxy for Earth's angle in space as measured by astronomers)
-# and publishes leap second data in a copyrighted file
-# <https://hpiers.obspm.fr/iers/bul/bulc/Leap_Second.dat>.
+# periodically used leap seconds to keep UTC to within 0.9 s of UT1
+# (a proxy for Earth's angle in space as measured by astronomers).
# See: Levine J. Coordinated Universal Time and the leap second.
# URSI Radio Sci Bull. 2016;89(4):30-6. doi:10.23919/URSIRSB.2016.7909995
# <https://ieeexplore.ieee.org/document/7909995>.
@@ -33,8 +31,8 @@
# of UTC.
# All leap-seconds are Stationary (S) at the given UTC time.
-# The correction (+ or -) is made at the given time, so in the unlikely
-# event of a negative leap second, a line would look like this:
+# The correction (+ or -) is made at the given time, so if a negative
+# leap second had ever occurred, a line would have looked like this:
# Leap YEAR MON DAY 23:59:59 - S
# Typical lines look like this:
# Leap YEAR MON DAY 23:59:60 + S
@@ -67,8 +65,9 @@ Leap 2015 Jun 30 23:59:60 + S
Leap 2016 Dec 31 23:59:60 + S
# UTC timestamp when this leap second list expires.
-# Any additional leap seconds will come after this.
-# This Expires line is commented out for now,
+# The idea was that any additional leap seconds would come after this.
+# This timestamp is obsolete as there will be no more leap seconds.
+# This Expires line is commented out, to avoid confusion, and
# so that pre-2020a zic implementations do not reject this file.
#Expires 2027 Jun 28 00:00:00
@@ -76,10 +75,9 @@ Leap 2016 Dec 31 23:59:60 + S
# "#updated" gives the last time the leap seconds data changed
# or, if this file was derived from the IERS leap-seconds.list,
# the last time that file changed in any way.
-# "#expires" gives the first time this file might be wrong;
-# if this file was derived from the IERS leap-seconds.list,
-# this is typically a bit less than one year after "updated".
#updated 1783323897 (2026-07-06 07:44:57 UTC)
+# "#expires" gives the first time this file might be wrong.
+# This timestamp is obsolete as there will be no more leap seconds.
#expires 1814140800 (2027-06-28 00:00:00 UTC)
# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)
diff --git a/contrib/tzdata/leapseconds.awk b/contrib/tzdata/leapseconds.awk
index b9986164f737..6abb58951833 100644
--- a/contrib/tzdata/leapseconds.awk
+++ b/contrib/tzdata/leapseconds.awk
@@ -5,18 +5,11 @@
# This program uses awk arithmetic. POSIX requires awk to support
# exact integer arithmetic only through 10**10, which means for NTP
# timestamps this program works only to the year 2216, which is the
-# year 1900 plus 10**10 seconds. However, in practice
-# POSIX-conforming awk implementations invariably use IEEE-754 double
-# and so support exact integers through 2**53. By the year 2216,
-# POSIX will almost surely require at least 2**53 for awk, so for NTP
-# timestamps this program should be good until the year 285,428,681
-# (the year 1900 plus 2**53 seconds). By then leap seconds will be
-# long obsolete, as the Earth will likely slow down so much that
-# there will be more than 25 hours per day and so some other scheme
-# will be needed.
+# year 1900 plus 10**10 seconds. However, this is not a practical problem
+# as the last leap second was in 2016 and there will be no more.
BEGIN {
- print "# Allowance for leap seconds added to each time zone file."
+ print "# Leap seconds (1972-2016) optionally added to TZif files."
print ""
print "# This file is in the public domain."
print ""
@@ -24,7 +17,7 @@ BEGIN {
print "# NIST/IERS format leap-seconds.list file, which can be copied from"
print "# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list>"
print "# or via a less-secure protocol and with different comments and"
- print "# less volatile last-modified and expiration timestamps, from"
+ print "# less volatile timestamp metadata, from"
print "# <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>."
print "# For more about leap-seconds.list, please see"
print "# The NTP Timescale and Leap Seconds"
@@ -36,10 +29,8 @@ BEGIN {
print "# (ITU-R) Recommendation TF.460-6 (02/2002)"
print "# <https://www.itu.int/rec/R-REC-TF.460-6-200202-I/>."
print "# The International Earth Rotation and Reference Systems Service (IERS)"
- print "# periodically uses leap seconds to keep UTC to within 0.9 s of UT1"
- print "# (a proxy for Earth's angle in space as measured by astronomers)"
- print "# and publishes leap second data in a copyrighted file"
- print "# <https://hpiers.obspm.fr/iers/bul/bulc/Leap_Second.dat>."
+ print "# periodically used leap seconds to keep UTC to within 0.9 s of UT1"
+ print "# (a proxy for Earth's angle in space as measured by astronomers)."
print "# See: Levine J. Coordinated Universal Time and the leap second."
print "# URSI Radio Sci Bull. 2016;89(4):30-6. doi:10.23919/URSIRSB.2016.7909995"
print "# <https://ieeexplore.ieee.org/document/7909995>."
@@ -51,8 +42,8 @@ BEGIN {
print "# of UTC."
print ""
print "# All leap-seconds are Stationary (S) at the given UTC time."
- print "# The correction (+ or -) is made at the given time, so in the unlikely"
- print "# event of a negative leap second, a line would look like this:"
+ print "# The correction (+ or -) is made at the given time, so if a negative"
+ print "# leap second had ever occurred, a line would have looked like this:"
print "# Leap YEAR MON DAY 23:59:59 - S"
print "# Typical lines look like this:"
print "# Leap YEAR MON DAY 23:59:60 + S"
@@ -108,16 +99,15 @@ END {
sstamp_to_ymdhMs(expires, ss_NTP)
print "# UTC timestamp when this leap second list expires."
- print "# Any additional leap seconds will come after this."
+ print "# The idea was that any additional leap seconds would come after this."
+ print "# This timestamp is obsolete as there will be no more leap seconds."
if (! EXPIRES_LINE) {
- print "# This Expires line is commented out for now,"
+ print "# This Expires line is commented out, to avoid confusion, and"
print "# so that pre-2020a zic implementations do not reject this file."
}
printf "%sExpires %.4d\t%s\t%.2d\t%.2d:%.2d:%.2d\n", \
EXPIRES_LINE ? "" : "#", \
ss_year, monthabbr[ss_month], ss_mday, ss_hour, ss_min, ss_sec
- } else {
- print "# (No Expires line, since the expires time is unknown.)"
}
# The difference between the NTP and POSIX epochs is 70 years
@@ -130,9 +120,6 @@ END {
print "# \"#updated\" gives the last time the leap seconds data changed"
print "# or, if this file was derived from the IERS leap-seconds.list,"
print "# the last time that file changed in any way."
- print "# \"#expires\" gives the first time this file might be wrong;"
- print "# if this file was derived from the IERS leap-seconds.list,"
- print "# this is typically a bit less than one year after \"updated\"."
if (updated) {
sstamp_to_ymdhMs(updated, ss_NTP)
printf "#updated %d (%.4d-%.2d-%.2d %.2d:%.2d:%.2d UTC)\n", \
@@ -142,12 +129,12 @@ END {
print "#(updated time unknown)"
}
if (expires) {
+ print "# \"#expires\" gives the first time this file might be wrong."
+ print "# This timestamp is obsolete as there will be no more leap seconds."
sstamp_to_ymdhMs(expires, ss_NTP)
printf "#expires %d (%.4d-%.2d-%.2d %.2d:%.2d:%.2d UTC)\n", \
expires - epoch_minus_NTP, \
ss_year, ss_month, ss_mday, ss_hour, ss_min, ss_sec
- } else {
- print "#(expires time unknown)"
}
printf "\n%s", last_lines
}
diff --git a/contrib/tzdata/northamerica b/contrib/tzdata/northamerica
index e3a4bd6d5332..19975434b7b7 100644
--- a/contrib/tzdata/northamerica
+++ b/contrib/tzdata/northamerica
@@ -1752,16 +1752,11 @@ Zone America/Toronto -5:17:32 - LMT 1895
# been aligned with neighboring Manitoba and use America/Winnipeg, in
# accordance with section 2(2) of Ontario's Time Act, RSO 1990 chapter T.9:
# https://www.ontario.ca/laws/statute/90t09
-# With Manitoba now opting to stay on -05 year-round, if any of these areas do
-# not follow, it would require a new zone; however, given the short leadtime
-# ahead of a potential divergence on 2026-11-01 and in the interest of not
-# creating zones that may not be needed, assume for the time being that they
-# will.
#
# In practice, there are several exceptions to the 90°W dividing line set by
# the province, all of which technically contravene the official Ontario rules:
-# - An area around Big Trout Lake in Kenora District observes Central Time
-# (-06/-05) despite extending east of 90°W.
+# - An area around Big Trout Lake in Kenora District aligns with
+# America/Winnipeg despite extending east of 90°W.
# - An area around Upsala in the southwest of Thunder Bay District observes
# Eastern Time (-05/-04) like America/Toronto despite extending west of
# 90°W.
@@ -1773,9 +1768,27 @@ Zone America/Toronto -5:17:32 - LMT 1895
# 1998, though it is less clear how far back that arrangement goes; assume
# the area is covered in the same way as Atikokan.
# See the 'backzone' file for further commentary.
-# At time of writing, it is not yet known to what extent Manitoba's 2026-09-17
-# announcement may spur further adaptations in northwestern Ontario; see
-# Manitoba, below.
+#
+# From Tim Parenti (2026-10-13):
+# On 2026-09-17, after neighboring Manitoba announced a shift to year-round -05
+# (see Manitoba, below), local leaders throughout northwestern Ontario
+# coordinated regionally alongside their local members of provincial parliament
+# to swiftly conduct several local surveys on the matter ahead of a potential
+# divergence on 2026-11-01. All of the surveys returned more than 90% support
+# for remaining in alignment with the “Manitoba model”.
+# https://www.nwonewswatch.com/local-journalism-initiative-lji/vast-majority-want-to-end-time-changes-mayor-12838025
+# https://www.kenoraminerandnews.com/news/local-news/kenora-asks-province-to-end-clock-changes/article_5118b819-9f67-42ce-938a-1478b8ab541e.html
+# From Aoun Khan and Chris Walton (2026-10-13):
+# Ontario is set to move parts of the province’s northwest region to permanent
+# daylight time in order to align with Manitoba.
+# https://www.cp24.com/news/canada/2026/10/13/ontario-to-move-northwest-regions-to-permanent-daylight-time/
+# The provincial government has issued a written news release:
+# https://news.ontario.ca/en/release/1008130/ontario-moving-to-permanent-daylight-saving-time-in-parts-of-northwestern-ontario
+# From Heitor David Pinto (2026-10-22):
+# [On 2026-10-19] the government of Ontario issued [Regulation 333/26] setting
+# the time in the part of the province west of 90°W as UTC-5 all year. It
+# comes into force on 1 November 2026.
+# https://www.ontario.ca/laws/regulation/r26333
# Manitoba
@@ -1953,13 +1966,13 @@ Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16
# which can be prescribed by regulation "if it is in the provincial interest"
# for those areas to observe either "UTC-5, UTC-6 or UTC-7 for all or part of
# the year" on at least 30 days' notice.
-# The new Act comes into force by order of the Lieutenant Governor in Council.
-# From Tim Parenti (2026-09-21):
-# With Manitoba now adopting year-round -05, the area around Creighton will
-# likely wish to follow. As the area doesn't have a special charter like
-# Lloydminster, the existing de facto arrangement technically violates
-# provincial law already, but once the new Act takes effect it will better
-# allow for continued alignment with Manitoba, per the above.
+# From Tim Parenti (2026-10-27), per Heitor David Pinto (2026-10-27):
+# Order in Council 438/2026 brings the new Act into force from 2026-10-30.
+# https://publications.saskatchewan.ca/#/products/130175
+# This should allow the area around Creighton to more straightforwardly remain
+# aligned with Manitoba on year-round -05, since its previous de facto
+# arrangement technically violated provincial law without a special charter
+# like Lloydminster.
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
Rule Regina 1918 only - Apr 14 2:00 1:00 D
@@ -2171,7 +2184,7 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
# 2026-08-14 meeting.
# https://www.cbc.ca/news/canada/british-columbia/east-kootenay-stops-changing-clocks-9.7308201
#
-# From Tim Parenti (2026-09-24):
+# From Tim Parenti (2026-10-15):
# Echoing RDEK’s earlier false step, the Town of Golden initially opted for
# year-round -07 by a 4–2 Council vote on 2026-09-01. This was met with
# significant pushback from residents preferring to maintain the existing
@@ -2185,9 +2198,10 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
# school”, the new resolution directs town staff to partner on safety supports
# and commits to reviewing the decision and its impacts in October 2027.
# https://www.ctvnews.ca/calgary/article/golden-bc-council-reverses-course-on-time-zone-opts-for-mountain-daylight-time/
-# At time of writing, the surrounding CSRD Area A is yet to formalize its own
-# decision following a 2026-09-10 deferral “to gather and assess further
-# information”, but is expected to follow.
+# Following a 2026-09-10 deferral “to gather and assess further information” in
+# light of the ongoing petition, the surrounding CSRD Area A unanimously
+# formalized its own change on 2026-10-15 in order to maintain the alignment.
+# https://www.csrd.bc.ca/m/newsflash/home/detail/2486
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
Rule Vanc 1918 only - Apr 14 2:00 1:00 D
@@ -3534,6 +3548,17 @@ Zone America/Costa_Rica -5:36:13 - LMT 1890 # San José
# From Paul Eggert (2012-11-03):
# For now, assume the future rule is first Sunday in November.
+# From an anonymous contributor (2026-10-24):
+# On October 24, 2026, the Cuban authorities announced that daylight saving
+# time would remain in effect until November 7, 2027, suspending the usual
+# return to standard time scheduled for November 1, 2026.
+# From Tim Parenti (2026-10-26):
+# The measure delays the start times for schools and workplaces by 30 minutes
+# during the period in which standard time would normally be in effect "to
+# avoid disrupting social activities during the early part of the day".
+# http://www.cuba.cu/otras/2026-10-25/cuba-mantendra-horario-de-verano-hasta-noviembre-de-2027/69459
+# https://en.cibercuba.com/noticias/2026-10-24-u1-e74-s27061-nid343708-cuba-mantendra-horario-verano-noviembre-2027-retrasara
+
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
Rule Cuba 1928 only - Jun 10 0:00 1:00 D
Rule Cuba 1928 only - Oct 10 0:00 0 S
@@ -3572,8 +3597,10 @@ Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
Rule Cuba 2011 only - Nov 13 0:00s 0 S
Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
-Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
-Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
+Rule Cuba 2012 2025 - Nov Sun>=1 0:00s 0 S
+Rule Cuba 2013 2026 - Mar Sun>=8 0:00s 1:00 D
+Rule Cuba 2027 max - Nov Sun>=1 0:00s 0 S
+Rule Cuba 2028 max - Mar Sun>=8 0:00s 1:00 D
# Zone NAME STDOFF RULES FORMAT [UNTIL]
Zone America/Havana -5:29:28 - LMT 1890
diff --git a/contrib/tzdata/southamerica b/contrib/tzdata/southamerica
index 2a9d60a02c9e..2731f2366b51 100644
--- a/contrib/tzdata/southamerica
+++ b/contrib/tzdata/southamerica
@@ -778,11 +778,21 @@ Zone America/La_Paz -4:32:36 - LMT 1890
# From Paul Eggert (2013-10-17):
# For now, assume western Amazonas will change as well.
+# From Daniel Dias Rodrigues (2026-10-20):
+# Under Brazilian law, a period stated as "until day X" includes day X.
+# From Tim Parenti (2026-10-27):
+# With the decrees explicitly naming the hour of 01:00 for only a few fall back
+# transitions, there remains some ambiguity in whether other implied midnight
+# fall back transitions may have therefore been intended as 24:00s (i.e.,
+# 25:00 -> 24:00) rather than as 24:00 (24:00 -> 23:00), particularly prior to
+# 1966. Since contemporaneous reporting was somewhat inconsistent on this,
+# minimize changes from earlier tzdb versions where there is ambiguity.
+
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
# Decree 20,466 <http://pcdsh01.on.br/HV20466.htm> (1931-10-01)
# Decree 21,896 <http://pcdsh01.on.br/HV21896.htm> (1932-01-10)
Rule Brazil 1931 only - Oct 3 11:00 1:00 -
-Rule Brazil 1932 1933 - Apr 1 0:00 0 -
+Rule Brazil 1932 1933 - Mar 31 24:00 0 -
Rule Brazil 1932 only - Oct 3 0:00 1:00 -
# Decree 23,195 <http://pcdsh01.on.br/HV23195.htm> (1933-10-10)
# revoked DST.
@@ -790,28 +800,32 @@ Rule Brazil 1932 only - Oct 3 0:00 1:00 -
# Decree 27,998 <http://pcdsh01.on.br/HV27998.htm> (1950-04-13)
Rule Brazil 1949 1952 - Dec 1 0:00 1:00 -
Rule Brazil 1950 only - Apr 16 1:00 0 -
-Rule Brazil 1951 1952 - Apr 1 0:00 0 -
+Rule Brazil 1951 1952 - Mar 31 24:00 0 -
# Decree 32,308 <http://pcdsh01.on.br/HV32308.htm> (1953-02-24)
-Rule Brazil 1953 only - Mar 1 0:00 0 -
+Rule Brazil 1953 only - Feb 28 24:00 0 -
# Decree 34,724 <http://pcdsh01.on.br/HV34724.htm> (1953-11-30)
# revoked DST.
# Decree 52,700 <http://pcdsh01.on.br/HV52700.htm> (1963-10-18)
-# established DST from 1963-10-23 00:00 to 1964-02-29 00:00
-# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
+# established DST as an "Hora Especial" from 1963-10-23 00:00 in SP, RJ, GB,
+# MG, ES, due to the prolongation of the drought. It originally specified an
+# end date of 1964-02-29 24:00.
# Decree 53,071 <http://pcdsh01.on.br/HV53071.htm> (1963-12-03)
-# extended the above decree to all of the national territory on 12-09.
+# extended DST as a usual "hora de verão" to all of the national territory from
+# 1963-12-09 and would have extended its end date to 1964-03-31 24:00.
Rule Brazil 1963 only - Dec 9 0:00 1:00 -
# Decree 53,604 <http://pcdsh01.on.br/HV53604.htm> (1964-02-25)
-# extended summer time by one day to 1964-03-01 00:00 (start of school).
+# restored the original end date of 1964-03-01 00:00 due to the start of
+# school.
Rule Brazil 1964 only - Mar 1 0:00 0 -
# Decree 55,639 <http://pcdsh01.on.br/HV55639.htm> (1965-01-27)
Rule Brazil 1965 only - Jan 31 0:00 1:00 -
-Rule Brazil 1965 only - Mar 31 0:00 0 -
+Rule Brazil 1965 only - Mar 31 24:00 0 -
# Decree 57,303 <http://pcdsh01.on.br/HV57303.htm> (1965-11-22)
-Rule Brazil 1965 only - Dec 1 0:00 1:00 -
+Rule Brazil 1965 only - Nov 30 24:00 1:00 -
# Decree 57,843 <http://pcdsh01.on.br/HV57843.htm> (1966-02-18)
-Rule Brazil 1966 1968 - Mar 1 0:00 0 -
+Rule Brazil 1966 only - Mar 1 1:00 0 -
Rule Brazil 1966 1967 - Nov 1 0:00 1:00 -
+Rule Brazil 1967 1968 - Mar 1 0:00 0 -
# Decree 63,429 <http://pcdsh01.on.br/HV63429.htm> (1968-10-15)
# revoked DST.
# Decree 91,698 <http://pcdsh01.on.br/HV91698.htm> (1985-09-27)
@@ -1040,6 +1054,7 @@ Zone America/Bahia -2:34:04 - LMT 1914
# Goiás (GO), Distrito Federal (DF), Minas Gerais (MG),
# Espírito Santo (ES), Rio de Janeiro (RJ), São Paulo (SP), Paraná (PR),
# Santa Catarina (SC), Rio Grande do Sul (RS)
+# The 1963 date is for MG, ES, RJ, SP; others started DST on 1963-12-09.
Zone America/Sao_Paulo -3:06:28 - LMT 1914
-3:00 Brazil %z 1963 Oct 23 0:00
-3:00 1:00 %z 1964
diff --git a/contrib/tzdata/theory.html b/contrib/tzdata/theory.html
index 84c6b8df8a71..3d322b314291 100644
--- a/contrib/tzdata/theory.html
+++ b/contrib/tzdata/theory.html
@@ -838,12 +838,12 @@ href="https://dissentmagazine.org/online_articles/booked-a-global-history-of-tim
The relationship between POSIX time (that is, <abbr>UTC</abbr> but
ignoring <a href="https://en.wikipedia.org/wiki/Leap_second">leap
seconds</a>) and <abbr>UTC</abbr> is not agreed upon.
- This affects time stamps during the leap second era (1972–2035).
+ This affects time stamps during the leap second era (1972–2016).
Although the POSIX
- clock officially stops during an inserted leap second, at least one
- proposed standard has it jumping back a second instead; and in
- practice POSIX clocks more typically either progress glacially during
- a leap second, or are slightly slowed while near a leap second.
+ clock officially stopped during an inserted leap second,
+ at least one proposed standard had it jumping back a second instead;
+ and in practice POSIX clocks more typically either progressed glacially
+ during a leap second, or were slightly slowed while near a leap second.
</li>
<li>
The <code><abbr>tz</abbr></code> database does not represent how
@@ -1347,35 +1347,33 @@ between now and the future time.
<p>
Leap seconds were introduced in 1972 to accommodate the
difference between atomic time and the less regular rotation of the earth.
-Unfortunately they have caused so many problems with civil
-timekeeping that there are
-<a href="https://www.bipm.org/en/cgpm-2022/resolution-4">plans
-to discontinue them by 2035</a>.
-Even if these plans come to fruition, a record of leap seconds will still be
-needed to resolve timestamps from 1972 through 2035,
-and there may also be a need to record whatever mechanism replaces them.
+Unfortunately they caused so many problems with civil
+timekeeping that the last leap second was in 2016.
+A record of leap seconds is still
+needed to resolve timestamps from 1972 through 2016,
+and there may also be a need to record whatever mechanism replaces them
+in the likely-distant future.
</p>
<p>
The <code><abbr>tz</abbr></code> code and data can account for leap seconds,
thanks to code contributed by Bradley White.
-However, the leap second support of this package is rarely used directly
+However, the leap second support of this package's code was rarely used
+even before leap seconds were discontinued,
because POSIX requires leap seconds to be excluded and many
software packages would mishandle leap seconds if they were present.
-Instead, leap seconds are more commonly handled by occasionally adjusting
+Instead, leap seconds were more commonly handled by occasionally adjusting
the operating system kernel clock as described in
-<a href="tz-link.html#precision">Precision timekeeping</a>,
+<a href="tz-link.html#leaps">Leap seconds</a>,
and this package by default installs a <samp>leapseconds</samp> file
commonly used by
<a href="https://www.ntp.org"><abbr title="Network Time Protocol">NTP</abbr></a>
-software that adjusts the kernel clock.
-However, kernel-clock twiddling approximates UTC only roughly,
-and systems needing more precise UTC can use this package’s leap
-second support directly.
+software that adjusted the kernel clock.
</p>
<p>
-The directly supported mechanism assumes that <code>time_t</code>
+In the rare case where this package's code is configured to support
+leap seconds, it assumes that <code>time_t</code>
counts of seconds since the POSIX epoch normally include leap seconds,
as opposed to POSIX <code>time_t</code> counts which exclude leap seconds.
This modified timescale is converted to <abbr>UTC</abbr>
diff --git a/contrib/tzdata/version b/contrib/tzdata/version
index 2c2d640a0f1c..3a0e3555219a 100644
--- a/contrib/tzdata/version
+++ b/contrib/tzdata/version
@@ -1 +1 @@
-2026e
+2026f