Photo by Luis Cortes on Unsplash
Recently I received a notification on my phone announcing that new time zone definitions were available and that I needed to restart my phone. I don?t recall seeing this type of notification in the past, but based on some of my recent data analytics projects I had a good idea what this might be about.
Screenshot from my phone asking me to restart due to new time zone definitions
The Internet Assigned Numbers Authority (IANA) maintains a database, tz database, of code and data that represent the history of local time for many locations around the globe. Using the time zone definitions contained in the tz database it is possible to determine the UTC offset for a particular time zone at a particular date. This includes definitions for the start and end of daylight savings time and also complete changes to the time zone for a country or region. This information changes more frequently than one might assume. For example, a recent change to the database added Fiji starting to observe daylight savings time from the second Sunday in November from 2019 instead of the first Sunday. The data contained within this database is complex and beyond the scope of this article.
Example of time zone definitions for Fiji in the tz database
If you have written code to convert time from one time zone to another, use any multitude of apps that need to convert between time zones, or use websites to do the conversion, then you have almost certainly in some way or form interacted with the tz database. The database is generally embedded within software systems such as operating systems (Windows, Android, iOS, etc.) and within environments as libraries (e.g. Java, Python and .Net, etc.).
The tz database is updated periodically to reflect changes made by political bodies to time zone boundaries, UTC offsets, and daylight-saving rules. This is important for programmers and software developers to keep in mind as the changes may have an impact for end users and that updates to code or libraries maybe required to reflect the changes, especially if they have not been updated in several years. It is also important for end users to keep software updated to ensure libraries used by apps on devices like computers and phones contain recent changes in the tz database in order to correctly convert time between different zones.
So, what is contained in the most recent changes? An update to the tz database was released on 23rd April 2020 (2020a) to include updates to the following information:
- Morocco currently permanently observes daylight savings time (UTC+01) for the entire year, except for the month of Ramadan where it reverts back to its original UTC time zone. Initially it was estimated that Morocco would change back to UTC+1 on the 24th of May 2020 (end of Ramadan), however it was officially announced that the time change would actually take place on the 31st of May 2020.
- The Canadian territory of Yukon announced that it will observe permanent Pacific Daylight Saving Time (UTC-07) all year round instead of reverting back to Pacific Standard Time (UTC-08) in November 2020.
- Addition of daylight savings time for Shanghai in 1919.
In the grand scheme of things these changes many seem minor, but in some applications the use of incorrectly converted times may have severe implications.