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.
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
# 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
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
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
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