Zoneinfo
From Wikipedia, the free encyclopedia
- The correct title of this article is zoneinfo. The initial letter is shown capitalized due to technical restrictions.
The zoneinfo database, also called the tz database, is a collaborative compilation of information about the world's time zones, primarily intended for use with computer programs and operating systems. It is sometimes referred to as the Olson database after its prominent founding contributor Arthur David Olson. Its most recognizable feature is the uniform naming convention designed by Paul Eggert for time zones, such as “America/New_York” and “Europe/Paris”. The database also attempts to record historical time zones and all civil changes since 1970, the Unix time epoch, including transitions such as daylight saving time, and even records leap seconds.
The project's origins go back to at least 1986, and has released the database as well as some reference source code to the public domain. New editions of the database are published as changes warrant, usually several times per year. As of the 2007c edition (2007-02-26) it lists 390 primary time zones.
Contents |
[edit] Meaning of time zone
Within the zoneinfo database, a time zone is any national or sub-national region where local clocks have all agreed since 1970. 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 zoneinfo database may document multiple offsets (relative to UTC); typically containing both the standard time and the daylight saving time in the same zone. Sometimes the number of different offsets may be larger, depending on the history of the region.
For each time zone that has multiple offsets, usually the standard and daylight variants, the zoneinfo database records the exact moment of transition between the variants. The format can accommodate changes in the dates and times of transitions as well.
[edit] Names of time zones
The time zones in the database are given uniform names, such as “America/New_York”, in an attempt to make them easier to understand by humans and to remove ambiguity.
These names are all of the form Area/Location, where Area is the name of a continent or ocean, and Location is the name of a specific location within that region, usually cities or small islands. The set of areas currently includes: Africa, America (encompasses both North and South), Antarctica, Arctic, Asia, Atlantic, Australia, Europe, Indian, and Pacific. Additionally a special area of Etc is used for some administrative zones, particularly for “Etc/UTC” which represents Coordinated Universal Time.
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 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.
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. 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. In the event that the name of a city changes, the convention is to create an alias in future editions so that both the old and new names refer to the same database entry.
In a few rare 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/…”.
It is important to note that 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 or are within different countries.
[edit] File formats
The zoneinfo database is published as a set of text files, which lists 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()
.
[edit] Use in software systems
The zoneinfo database incorporated into and 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;
- GNU and GNU/Linux, mostly because of the database's inclusion in the GNU C Library;
- GNU-like environments, including DJGPP and Cygwin;
- many Unix-derived systems, including AIX, IRIX, Tru64 UNIX, and UnixWare;
- OpenVMS;
- Solaris (SunOS 4.x used it, and it was picked up by System V Release 4);
- the Java Runtime Environment since release 1.4 (2002); and
- Oracle releases since 10g (2004).
The Olson timezone IDs are also used by the Unicode Common Locale Data Repository (CLDR) Project (http://unicode.org/cldr/), which stores locale data in using the UTS #35: Locale Data Markup Language (LDML) XML standard. LDML is used for general interchange of locale data and can be used to import data, for example into the Microsoft .NET Platform.