Skip to content

Commit 8cde178

Browse files
committed
IANA 2024a
2 parents ebee1ae + e22640e commit 8cde178

27 files changed

+1091
-880
lines changed

tz/Makefile

+42-11
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ DATAFORM= main
5353

5454
LOCALTIME= Factory
5555

56-
# The POSIXRULES macro controls interpretation of POSIX-like TZ
56+
# The POSIXRULES macro controls interpretation of POSIX-2017.1-like TZ
5757
# settings like TZ='EET-2EEST' that lack DST transition rules.
5858
# If POSIXRULES is '-', no template is installed; this is the default.
5959
# Any other value for POSIXRULES is obsolete and should not be relied on, as:
@@ -274,7 +274,7 @@ LDLIBS=
274274
# -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory;
275275
# the default is system-supplied, typically "/usr/lib/locale"
276276
# -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified
277-
# DST transitions for POSIX-style TZ strings lacking them,
277+
# DST transitions for POSIX.1-2017-style TZ strings lacking them,
278278
# in the usual case where POSIXRULES is '-'. If not specified,
279279
# TZDEFRULESTRING defaults to US rules for future DST transitions.
280280
# This mishandles some past timestamps, as US DST rules have changed.
@@ -340,9 +340,10 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
340340
# guess TM_GMTOFF from other macros; define NO_TM_GMTOFF to suppress this.
341341
# Similarly, if your system has a "zone abbreviation" field, define
342342
# -DTM_ZONE=tm_zone
343-
# and define NO_TM_ZONE to suppress any guessing. Although these two fields
344-
# not required by POSIX, a future version of POSIX is planned to require them
345-
# and they are widely available on GNU/Linux and BSD systems.
343+
# and define NO_TM_ZONE to suppress any guessing.
344+
# Although these two fields are not required by POSIX.1-2017,
345+
# POSIX 202x/D4 requires them and they are widely available
346+
# on GNU/Linux and BSD systems.
346347
#
347348
# The next batch of options control support for external variables
348349
# exported by tzcode. In practice these variables are less useful
@@ -352,7 +353,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
352353
# # -DHAVE_TZNAME=0 # do not support "tzname"
353354
# # -DHAVE_TZNAME=1 # support "tzname", which is defined by system library
354355
# # -DHAVE_TZNAME=2 # support and define "tzname"
355-
# # to the "CFLAGS=" line. "tzname" is required by POSIX 1988 and later.
356+
# # to the "CFLAGS=" line. "tzname" is required by POSIX.1-1988 and later.
356357
# # If not defined, the code attempts to guess HAVE_TZNAME from other macros.
357358
# # Warning: unless time_tz is also defined, HAVE_TZNAME=1 can cause
358359
# # crashes when combined with some platforms' standard libraries,
@@ -362,8 +363,8 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
362363
# # -DUSG_COMPAT=0 # do not support
363364
# # -DUSG_COMPAT=1 # support, and variables are defined by system library
364365
# # -DUSG_COMPAT=2 # support and define variables
365-
# # to the "CFLAGS=" line; "timezone" and "daylight" are inspired by
366-
# # Unix Systems Group code and are required by POSIX 2008 (with XSI) and later.
366+
# # to the "CFLAGS=" line; "timezone" and "daylight" are inspired by Unix
367+
# # Systems Group code and are required by POSIX.1-2008 and later (with XSI).
367368
# # If not defined, the code attempts to guess USG_COMPAT from other macros.
368369
# #
369370
# # To support the external variable "altzone", add
@@ -427,7 +428,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
427428

428429
# The name of a POSIX-like library archiver, its flags, C compiler,
429430
# linker flags, and 'make' utility. Ordinarily the defaults suffice.
430-
# The commented-out values are the defaults specified by POSIX 202x/D3.
431+
# The commented-out values are the defaults specified by POSIX.1-202x/D4.
431432
#AR = ar
432433
#ARFLAGS = -rv
433434
#CC = c17
@@ -439,6 +440,12 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
439440

440441
LEAPSECONDS=
441442

443+
# Where to fetch leap-seconds.list from.
444+
leaplist_URI = \
445+
https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list
446+
# The file is generated by the IERS Earth Orientation Centre, in Paris.
447+
leaplist_TZ = Europe/Paris
448+
442449
# The zic command and its arguments.
443450

444451
zic= ./zic
@@ -471,7 +478,8 @@ AWK= awk
471478
# is typically nicer if it works.
472479
KSHELL= /bin/bash
473480

474-
# Name of curl <https://curl.haxx.se/>, used for HTML validation.
481+
# Name of curl <https://curl.haxx.se/>, used for HTML validation
482+
# and to fetch leap-seconds.list from upstream.
475483
CURL= curl
476484

477485
# Name of GNU Privacy Guard <https://gnupg.org/>, used to sign distributions.
@@ -718,6 +726,28 @@ leapseconds: $(LEAP_DEPS)
718726
-f leapseconds.awk leap-seconds.list >$@.out
719727
mv $@.out $@
720728
729+
# Awk script to extract a Git-style author from leap-seconds.list comments.
730+
EXTRACT_AUTHOR = \
731+
author_line { sub(/^.[[:space:]]*/, ""); \
732+
sub(/:[[:space:]]*/, " <"); \
733+
printf "%s>\n", $$0; \
734+
success = 1; \
735+
exit \
736+
} \
737+
/Questions or comments to:/ { author_line = 1 } \
738+
END { exit !success }
739+
740+
# Fetch leap-seconds.list from upstream.
741+
fetch-leap-seconds.list:
742+
$(CURL) -OR $(leaplist_URI)
743+
744+
# Fetch leap-seconds.list from upstream and commit it to the local repository.
745+
commit-leap-seconds.list: fetch-leap-seconds.list
746+
author=$$($(AWK) '$(EXTRACT_AUTHOR)' leap-seconds.list) && \
747+
date=$$(TZ=$(leaplist_TZ) stat -c%y leap-seconds.list) && \
748+
git commit --author="$$author" --date="$$date" -m'make $@' \
749+
leap-seconds.list
750+
721751
# Arguments to pass to submakes of install_data.
722752
# They can be overridden by later submake arguments.
723753
INSTALLARGS = \
@@ -1315,7 +1345,8 @@ zic.o: private.h tzfile.h tzdir.h version.h
13151345
.PHONY: ALL INSTALL all
13161346
.PHONY: check check_mild check_time_t_alternatives
13171347
.PHONY: check_web check_zishrink
1318-
.PHONY: clean clean_misc dummy.zd force_tzs
1348+
.PHONY: clean clean_misc commit-leap-seconds.list dummy.zd
1349+
.PHONY: fetch-leap-seconds.list force_tzs
13191350
.PHONY: install install_data maintainer-clean names
13201351
.PHONY: posix_only posix_right public
13211352
.PHONY: rearguard_signatures rearguard_signatures_version

tz/NEWS

+68
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,73 @@
11
News for the tz database
22

3+
Release 2024a - 2024-02-01 09:28:56 -0800
4+
5+
Briefly:
6+
Kazakhstan unifies on UTC+5 beginning 2024-03-01.
7+
Palestine springs forward a week later after Ramadan.
8+
zic no longer pretends to support indefinite-past DST.
9+
localtime no longer mishandles Ciudad Juárez in 2422.
10+
11+
Changes to future timestamps
12+
13+
Kazakhstan unifies on UTC+5. This affects Asia/Almaty and
14+
Asia/Qostanay which together represent the eastern portion of the
15+
country that will transition from UTC+6 on 2024-03-01 at 00:00 to
16+
join the western portion. (Thanks to Zhanbolat Raimbekov.)
17+
18+
Palestine springs forward a week later than previously predicted
19+
in 2024 and 2025. (Thanks to Heba Hamad.) Change spring-forward
20+
predictions to the second Saturday after Ramadan, not the first;
21+
this also affects other predictions starting in 2039.
22+
23+
Changes to past timestamps
24+
25+
Asia/Ho_Chi_Minh's 1955-07-01 transition occurred at 01:00
26+
not 00:00. (Thanks to Đoàn Trần Công Danh.)
27+
28+
From 1947 through 1949, Toronto's transitions occurred at 02:00
29+
not 00:00. (Thanks to Chris Walton.)
30+
31+
In 1911 Miquelon adopted standard time on June 15, not May 15.
32+
33+
Changes to code
34+
35+
The FROM and TO columns of Rule lines can no longer be "minimum"
36+
or an abbreviation of "minimum", because TZif files do not support
37+
DST rules that extend into the indefinite past - although these
38+
rules were supported when TZif files had only 32-bit data, this
39+
stopped working when 64-bit TZif files were introduced in 1995.
40+
This should not be a problem for realistic data, since DST was
41+
first used in the 20th century. As a transition aid, FROM columns
42+
like "minimum" are now diagnosed and then treated as if they were
43+
the year 1900; this should suffice for TZif files on old systems
44+
with only 32-bit time_t, and it is more compatible with bugs in
45+
2023c-and-earlier localtime.c. (Problem reported by Yoshito
46+
Umaoka.)
47+
48+
localtime and related functions no longer mishandle some
49+
timestamps that occur about 400 years after a switch to a time
50+
zone with a DST schedule. In 2023d data this problem was visible
51+
for some timestamps in November 2422, November 2822, etc. in
52+
America/Ciudad_Juarez. (Problem reported by Gilmore Davidson.)
53+
54+
strftime %s now uses tm_gmtoff if available. (Problem and draft
55+
patch reported by Dag-Erling Smørgrav.)
56+
57+
Changes to build procedure
58+
59+
The leap-seconds.list file is now copied from the IERS instead of
60+
from its downstream counterpart at NIST, as the IERS version is
61+
now in the public domain too and tends to be more up-to-date.
62+
(Thanks to Martin Burnicki for liaisoning with the IERS.)
63+
64+
Changes to documentation
65+
66+
The strftime man page documents which struct tm members affect
67+
which conversion specs, and that tzset is called. (Problems
68+
reported by Robert Elz and Steve Summit.)
69+
70+
371
Release 2023d - 2023-12-21 20:02:24 -0800
472

573
Briefly:

tz/africa

+6-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@
3030
# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
3131
# https://www.jstor.org/stable/1774359
3232
#
33+
# For the 1911/1912 establishment of standard time in French possessions, see:
34+
# Société Française de Physique, Recueil de constantes physiques (1913),
35+
# page 752, 18b.
36+
#
3337
# European-style abbreviations are commonly used along the Mediterranean.
3438
# For sub-Saharan Africa abbreviations were less standardized.
3539
# Previous editions of this database used WAT, CAT, SAT, and EAT
@@ -113,7 +117,7 @@ Zone Atlantic/Cape_Verde -1:34:04 - LMT 1912 Jan 01 2:00u # Praia
113117

114118
# Chad
115119
# Zone NAME STDOFF RULES FORMAT [UNTIL]
116-
Zone Africa/Ndjamena 1:00:12 - LMT 1912 # N'Djamena
120+
Zone Africa/Ndjamena 1:00:12 - LMT 1912 Jan 1 # N'Djamena
117121
1:00 - WAT 1979 Oct 14
118122
1:00 1:00 WAST 1980 Mar 8
119123
1:00 - WAT
@@ -139,7 +143,7 @@ Zone Africa/Ndjamena 1:00:12 - LMT 1912 # N'Djamena
139143
# Inaccessible, Nightingale: uninhabited
140144

141145
# Zone NAME STDOFF RULES FORMAT [UNTIL]
142-
Zone Africa/Abidjan -0:16:08 - LMT 1912
146+
Zone Africa/Abidjan -0:16:08 - LMT 1912 Jan 1
143147
0:00 - GMT
144148

145149
###############################################################################

0 commit comments

Comments
 (0)