The past year—particularly the second half of 2021—was a busy one for the Time Zone Database (tzdata
) project, which provides Red Hat Enterprise Linux (RHEL) with data specific to the local time zone. Project contributors engaged in lively discussion over how to treat historical time zone data, and changes in some countries' daylight saving time (DST) start and end dates—including one announced with less than two weeks' notice—kept the maintainers busy.
The tzdata
package contains the data files documenting both current and historic transitions for various time zones around the world. This data represents changes required by local government bodies or by time zone boundary changes, as well as changes to UTC offsets and DST. The GNU C Library (glibc) uses the tzdata
package in order to make APIs such as strftime()
work correctly, while applications such as /usr/bin/date
make use of this information to print the local date.
2021 began slowly with the January release of the update tzdata 2021a
, which supported time zone changes in South Sudan. However, over the subsequent months, significant changes were introduced upstream that combined or merged time zones and resulted in a lot of controversy.
Merging time zones
When the upstream project proposed merging time zones, a lengthy and often heated discussion began and continued over the next several months. The dispute involved the upstream project's decision to merge time zones whose timestamps and DST transitions were alike since 1970, a process now known as the alike-since-1970 changes.
The decision on which time zones would be merged or replaced was based on the populations of the represented areas. The name of the original time zone with the larger population was used for the newly merged zone. The related discussions included debates about inclusion and historical accuracy, as well as other concerns.
America/Creston and America/Phoenix offer an example of the historical issues raised by this process. The two zones have had the same timestamps and DST transitions since 1970. However, the pre-1970 timestamps and DST transitions were often different.
Merging the time zones resulted in what had been America/Creston becoming part of America/Phoenix. This means that the pre-1970 data for America/Creston has been replaced with the pre-1970 data for America/Phoenix, as you can see from the following output from zdump
commands. Here's the output using the version of the database updated to tzdata-2021a
:
# zdump -v America/Creston
America/Creston -9223372036854775808 = NULL
America/Creston -9223372036854689408 = NULL
America/Creston Tue Jan 1 07:46:03 1884 UT = Mon Dec 31 23:59:59 1883 LMT isdst=0 gmtoff=-27964
America/Creston Tue Jan 1 07:46:04 1884 UT = Tue Jan 1 00:46:04 1884 MST isdst=0 gmtoff=-25200
America/Creston Sun Oct 1 06:59:59 1916 UT = Sat Sep 30 23:59:59 1916 MST isdst=0 gmtoff=-25200
America/Creston Sun Oct 1 07:00:00 1916 UT = Sat Sep 30 23:00:00 1916 PST isdst=0 gmtoff=-28800
America/Creston Sun Jun 2 07:59:59 1918 UT = Sat Jun 1 23:59:59 1918 PST isdst=0 gmtoff=-28800
America/Creston Sun Jun 2 08:00:00 1918 UT = Sun Jun 2 01:00:00 1918 MST isdst=0 gmtoff=-25200
America/Creston 9223372036854689407 = NULL
America/Creston 9223372036854775807 = NULL
And here's the output from tzdata-2021c
, which includes the zone merger:
#zdump -v America/Creston
America/Creston -9223372036854775808 = NULL
America/Creston -9223372036854689408 = NULL
America/Creston Sun Nov 18 18:59:59 1883 UT = Sun Nov 18 11:31:41 1883 LMT isdst=0 gmtoff=-26898
America/Creston Sun Nov 18 19:00:00 1883 UT = Sun Nov 18 12:00:00 1883 MST isdst=0 gmtoff=-25200
America/Creston Sun Mar 31 08:59:59 1918 UT = Sun Mar 31 01:59:59 1918 MST isdst=0 gmtoff=-25200
America/Creston Sun Mar 31 09:00:00 1918 UT = Sun Mar 31 03:00:00 1918 MDT isdst=1 gmtoff=-21600
America/Creston Sun Oct 27 07:59:59 1918 UT = Sun Oct 27 01:59:59 1918 MDT isdst=1 gmtoff=-21600
America/Creston Sun Oct 27 08:00:00 1918 UT = Sun Oct 27 01:00:00 1918 MST isdst=0 gmtoff=-25200
America/Creston Sun Mar 30 08:59:59 1919 UT = Sun Mar 30 01:59:59 1919 MST isdst=0 gmtoff=-25200
America/Creston Sun Mar 30 09:00:00 1919 UT = Sun Mar 30 03:00:00 1919 MDT isdst=1 gmtoff=-21600
America/Creston Sun Oct 26 07:59:59 1919 UT = Sun Oct 26 01:59:59 1919 MDT isdst=1 gmtoff=-21600
America/Creston Sun Oct 26 08:00:00 1919 UT = Sun Oct 26 01:00:00 1919 MST isdst=0 gmtoff=-25200
America/Creston Mon Feb 9 08:59:59 1942 UT = Mon Feb 9 01:59:59 1942 MST isdst=0 gmtoff=-25200
America/Creston Mon Feb 9 09:00:00 1942 UT = Mon Feb 9 03:00:00 1942 MWT isdst=1 gmtoff=-21600
America/Creston Sat Jan 1 06:00:59 1944 UT = Sat Jan 1 00:00:59 1944 MWT isdst=1 gmtoff=-21600
America/Creston Sat Jan 1 06:01:00 1944 UT = Fri Dec 31 23:01:00 1943 MST isdst=0 gmtoff=-25200
America/Creston Sat Apr 1 07:00:59 1944 UT = Sat Apr 1 00:00:59 1944 MST isdst=0 gmtoff=-25200
America/Creston Sat Apr 1 07:01:00 1944 UT = Sat Apr 1 01:01:00 1944 MWT isdst=1 gmtoff=-21600
America/Creston Sun Oct 1 06:00:59 1944 UT = Sun Oct 1 00:00:59 1944 MWT isdst=1 gmtoff=-21600
America/Creston Sun Oct 1 06:01:00 1944 UT = Sat Sep 30 23:01:00 1944 MST isdst=0 gmtoff=-25200
America/Creston Sun Apr 30 08:59:59 1967 UT = Sun Apr 30 01:59:59 1967 MST isdst=0 gmtoff=-25200
America/Creston Sun Apr 30 09:00:00 1967 UT = Sun Apr 30 03:00:00 1967 MDT isdst=1 gmtoff=-21600
America/Creston Sun Oct 29 07:59:59 1967 UT = Sun Oct 29 01:59:59 1967 MDT isdst=1 gmtoff=-21600
America/Creston Sun Oct 29 08:00:00 1967 UT = Sun Oct 29 01:00:00 1967 MST isdst=0 gmtoff=-25200
America/Creston 9223372036854689407 = NULL
America/Creston 9223372036854775807 = NULL
It is possible to build tzdata
with PACKRATDATA=backzone
if historic pre-1970 data is needed.
Technically, merging time zones also created the potential to break downstream applications. Members of the Java community were very active in the discussion, expressing concerns about breaking Java and historical data loss.
Daylight saving time changes
As September approached, the upstream project needed to release an update to support the announcement that Samoa would no longer observe DST. This resulted in an uptick in discussions, including a proposal to branch the upstream project, replacing the upstream coordinator, and raising the issue with the governing committee.
On September 25, tzdata-2021b
was released upstream with several merged zones. More populated zones were preserved while less populated ones were moved to backzone
.
Very shortly thereafter, on October 1, another update—tzdata-2021c
—was issued upstream to fix compatibility issues raised as a result of tzdata-2021b
. Given the ongoing discussions, the upstream coordinator also reverted several previously applied changes to allow more time for discussion. Red Hat preempted tzdata-2021b
out of concern for the reported compatibility issues and instead shipped tzdata-2021c
.
On October 11, the upstream project was notified that Fiji had suspended DST for the 2021/2022 season. This required yet another update: tzdata-2021d
, released upstream on October 15.
On October 18, while Red Hat Engineering was preparing and testing tzdata-2021d
for release, the upstream project was notified that Palestine planned to begin wintertime on October 29, rather than on October 30 as had previously been predicted. On October 22, the upstream project released tzdata-2021e
to support this change. Red Hat Engineering preempted tzdata-2021d to focus resources on tzdata-2021e
, and Red Hat shipped tzdata-2021e
on October 26.
tzdata updates in 2022
There are still ongoing upstream discussions related to merging time zones, pre-1970 data, the use of backward links, and the expected time zone database interfaces. Hopefully, these will be resolved in 2022.
For the latest Red Hat tzdata updates, follow the Red Hat Enterprise Linux Timezone Data (tzdata) Development Status Page.
Last updated: August 26, 2022