tz database
The tz database, also called the zoneinfo database, is a collaborative compilation of information about the world's time zones, primarily intended for use with computer programs and operating systems.[1] It is sometimes referred to as the Olson database after the founding contributor Arthur David Olson.[2] Paul Eggert is editor and maintainer of the tz database.[3]
Its most recognizable feature is the uniform naming convention designed by Paul Eggert for time zones, such as "America/New_York" and "Europe/Paris".[4] The database attempts to record historical time zones and all civil changes since 1970, the Unix time epoch.[5] It also includes transitions such as daylight saving time, and even records leap seconds.[6]

History
The project's origins go back to at least 1986.[8] The project's database, as well as some reference source code, is in the public domain.[9] New editions of the database are published as changes warrant, usually several times per year.[10]
Definition of a time zone
Within the tz database, a time zone is any national or sub-national region where local clocks have all agreed since 1970.[11] This definition concerns itself first with geographic areas which have had consistent local clocks. This is different from other definitions which concern themselves with consistent offsets from a prime meridian. Therefore each of the time zones defined by the tz database may document multiple offsets to UTC, typically containing both the standard time and the daylight saving time in the same zone.
Names of time zones
The time zones have unique names in the form "Area/Location", e.g. "America/New_York", in an attempt to make them easier to understand by humans. A choice was also made to use English names or equivalents, and to omit punctuation and common suffixes. The underscore character is used in place of spaces. Hyphens are used too.
Area
Area is either the name of a continent and ocean or "Etc". The set of continents and oceans currently include: Africa, America, Antarctica, Arctic, Asia, Atlantic, Australia, Europe, Indian, and Pacific.
The special area of Etc is used for some administrative zones, particularly for "Etc/UTC" which represents Coordinated Universal Time. In order to conform with the POSIX style, those zones beginning with "Etc/GMT" have their sign reversed from what most people expect. In this style, zones west of GMT have a positive sign and those east have a negative sign.
Location
Location is the name of a specific location within that region, usually cities or small islands.
Country names are not used in this scheme, primarily because they would not be robust due to frequent political and boundary changes. The names of large cities tend to be more permanent. However, the database maintainers attempt to include at least one zone for every ISO 3166-1 alpha-2 country code, and a number of user interfaces to the database take advantage of this. Additionally there is a desire to keep locations geographically compact so that any future time zone changes do not split locations into different time zones.[citation needed]
Usually the most populous city in a region is chosen to represent the entire time zone, although other cities may be selected if they are more widely known or result in a less ambiguous name.[citation needed] In the event that the name of a city changes, the convention is to create an alias[citation needed] in future editions so that both the old and new names refer to the same database entry.
In some cases the Location is itself represented as a compound name, for example the time zone "America/Indiana/Indianapolis". The only three-level names currently include those under "America/Argentina/...", "America/Kentucky/...", "America/Indiana/...", and "America/North_Dakota/...".
The location selected is representative for the entire area, so not every city has a time zone named after it. There is for example no "America/Boston" time zone. Furthermore, different places which currently conform to the same time zone may have different names if historically they differed (for example, "America/Detroit" versus "America/New_York") or are within different countries (for example, "Europe/Prague" versus "Europe/Bratislava").
Data stored for each zone
For each time zone that has multiple offsets, usually the standard and daylight variants, the tz database records the exact moment of transition. The format can accommodate changes in the dates and times of transitions as well.
Zone.tab
The file zone.tab is in the public domain. Columns and row sorting are described in the comments of the file, as follows
# This file contains a table with the following columns: # 1. ISO 3166 2-character country code. See the file `iso3166.tab'. # 2. Latitude and longitude of the zone's principal location # in ISO 6709 sign-degrees-minutes-seconds format, # either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS, # first latitude (+ is north), then longitude (+ is east). # 3. Zone name used in value of TZ environment variable. # 4. Comments; present if and only if the country has multiple rows. # # Columns are separated by a single tab. # The table is sorted first by country, then an order within the country that # (1) makes some geographical sense, and # (2) puts the most populous zones first, where that does not contradict (1).
Data before 1970
Data before 1970 aims to be correct for the city identifying the region, but is not necessarily correct for the entire region. This is because new regions are created only as required to distinguish clocks since 1970.
For example, between 1963-10-23 and 1963-12-09 in Brazil only Minas Gerais, Espirito Santo, Rio de Janeiro and Sao Paulo had summer time, but on request a split from America/Sao_Paulo was rejected with the reasoning that since 1970 the clocks were the same in the whole region.[12]
Time in Germany, which is represented by Europe/Berlin is not correct for the time span after 1945 when the Trizone did not follow Berlin's switch to DST.[citation needed]
File formats
The tz database is published as a set of text files which list the rules and zone transitions in a human-readable format. For use, these text files are compiled into a set of platform-independent binary files—one per time zone. The reference source code includes such a compiler called zic (zone information compiler), as well as code to read those files and use them in standard APIs such as localtime()
and mktime()
.
Maintenance
The tz reference code and database is maintained by a group of volunteers. Arthur David Olson makes most of the changes to the code, and Paul Eggert to the database. Proposed changes are sent to the tz mailing list, which is gatewayed to the comp.time.tz newsgroup. Source files are distributed via the FTP server elsie.nci.nih.gov. Typically, these files are taken by a software distributor like Debian, compiled, and then the source and binaries are packaged as part of that distribution. End users can either rely on their software distribution's update procedures, which may entail some delay, or obtain the source directly from ftp://elsie.nci.nih.gov/pub/ and build the binary files themselves. A future maintenance plan based on similar principles has been drafted through the IANA.
Use in other standards
CLDR uses UN/LOCODEs to identify regions [1]. This means all identifiers are referencing a country, something that the creators of the tz database wanted to avoid.
Use in software systems
The tz database is used for time zone processing and conversions in many computer software systems, including:
- BSD-derived systems, including FreeBSD, NetBSD, OpenBSD, DragonFly BSD, and Mac OS X;
- the GNU C Library and systems that use it, including GNU, most Linux distributions, BeOS, Haiku, Nexenta OS, and Cygwin;
- System V Release 4-derived systems, such as Solaris and UnixWare;
- AIX 6.1 and later[13][14] (earlier versions of AIX, starting with AIX 5.2, include zoneinfo[15], for support of third-party applications such as MySQL[16], but do not use it themselves[15][17]);
- several other Unix systems, including Tru64, and UNICOS/mp (also IRIX, still maintained but no longer shipped);
- OpenVMS;
- the Java Runtime Environment since release 1.4 (2002);
- the Perl modules DateTime::TimeZone and DateTime::LeapSecond since 2003;
- PHP releases since 5.1.0 (2005);
- the Python module pytz;
- Oracle releases since 10g (2004);[18]
- PostgreSQL since release 8.0 (2005);
- embedded software such as the firmware used in IP clocks.
The Olson timezone IDs are also used by the Unicode Common Locale Data Repository (CLDR) and International Components for Unicode (ICU). For example, the CLDR Windows → Tzid table maps Microsoft Windows time zone IDs to the standard Olson names.[19]
See also
Notes
- ^ Eggert, Paul (2007-11-29). "Sources for time zone and daylight saving time data". Retrieved 2007-12-03.
{{cite web}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - ^ Olson, Arthur David (1986-12-16). "Resolved timezone issue? Other issues. New ctime manual page". tz (Mailing list).
{{cite mailing list}}
: Missing or empty|url=
(help); Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ Eggert, Paul (2005-01). "Re: FW: IANA time zone registration - proposal". tz (Mailing list).
{{cite mailing list}}
: Check date values in:|date=
(help); Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ Eggert, Paul (1993-10-20). "proposal for time zone names". tz (Mailing list).
{{cite mailing list}}
: Missing or empty|url=
(help); Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ Olson, Arthur David (1987-03-18). "Re: ist of issues". tz (Mailing list).
{{cite mailing list}}
: Missing or empty|url=
(help); Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ Devine, Bob (1988-06-02). "leap seconds; [0-60] is ok". tz (Mailing list).
{{cite mailing list}}
: Missing or empty|url=
(help); Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ Mueller, Erik. A map of the TZ timezones of the world [updated 2009-11-23].
- ^ Olson, Arthur David (1986-11-24). "seismo!elsie!tz ; new versions of time zone stuff". tz (Mailing list).
{{cite mailing list}}
: Missing or empty|url=
(help); Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ Eggert, Paul (1995-11-11). "questions and comments on http://tycho.usno.navy.mil/tzones.html". tz (Mailing list).
{{cite mailing list}}
: Missing or empty|url=
(help); Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ "zoneinfo tzcode and tzdata archives (FTP)". Retrieved 2007-10-30.
- ^ Theory (text file), contained in the "tzcode" distribution. Version tzcode2007h.tar.gz 2007-10-01 referenced.
- ^ Olson, Arthur David (2010-01-06). "RE: little nuance in brazil 1963". tz (Mailing list).
{{cite mailing list}}
: Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ "Olson time zone support and setup". AIX 7.1 information. IBM. Retrieved 2011-03-12.
- ^ "Managing the Time Zone Variable". IBM. 2007-02-02. Retrieved 2011-03-11.
- ^ a b "AIX O/S updated to support 2007 Daylight Saving Time change". IBM. 2007-10-18. Retrieved 2011-03-12.
- ^ "2007 daylight savings time changes for Unix". Academic Computing and Communications Center, University of Illinois at Chicago. 2007-02-25. Retrieved 2008-03-18.)
- ^ Wickremasinghe, Christopher (2009-03-30). "Introduction of daylight saving time in Western Australia 2006". AIX Wiki. IBM. Retrieved 2011-03-11.
- ^ Oracle Database Globalization Support Guide 10g Release 1 (10.1): Chapter 4, Section "Choosing a Time Zone File". Oracle Corporation. 2004. pp. 4–14. Part No. B10749-02. Retrieved 2007-10-30.
{{cite book}}
: Unknown parameter|month=
ignored (help) - ^ "Windows → Tzid". Unicode Consortium. 2007-11-12. Retrieved 2008-02-17.
References
- "tz mailing list"; archives of these messages are available at <ftp://elsie.nci.nih.gov/pub/tzarchive.gz>.
External links
- ITU LEGAL TIME 2011
- The tz database home page
- The tz mailing list archive
- Current tz source and data raw files
- Current tz data files compiled to multiple formats
- Lists of tz-zones by tz-group
- The tz database converted to SQL format
- Olson Database converted to Windows Standard Format
- “A literary appreciation of the Olson/Zoneinfo/tz database” by Jon Udell