Fact-checked by Grok 2 weeks ago

tz database

The tz database, also known as the IANA Time Zone Database or zoneinfo database, is a public-domain collection of files and C that records the past, present, and predicted future of scales for representative locations worldwide, including UTC offsets, boundaries, and rules for as established by political authorities. It partitions the globe into over 400 regions where local clocks align, enabling accurate conversion between UTC and local times while accounting for historical irregularities such as wartime adjustments or irregular DST transitions. Originally developed in the late 1970s by Arthur David Olson to support portable handling in Unix systems, the database has evolved into a standardized resource maintained by the (IANA) since 2011, following procedures outlined in RFC 6557 (BCP 175). Primary maintenance is handled by TZ Coordinator Paul Eggert, with assistance from Tim Parenti, through a community-driven process involving contributions via the [email protected] and periodic releases—typically 3 to 5 per year—to incorporate verified changes from governments and legal sources. The current version, 2025b released on March 22, 2025, includes updates such as a new time zone for Chile's and adjustments for Paraguay's permanent adoption of UTC-03. Widely adopted in major operating systems like , macOS, , , and Windows (via extensions), as well as in programming libraries such as the GNU C Library and ICU, the tz database ensures consistent and reliable time zone computations across software ecosystems, though its predictions beyond official announcements remain provisional to avoid overstepping into unverified policy speculation.

Introduction

Purpose and scope

The tz database, formally known as the IANA Time Zone Database, is a public-domain compilation of rules and data for across global regions, initiated in the late to standardize representations of local time for computational purposes. It records the history and anticipated future of time scales, including offsets from (UTC) and adjustments for (DST), enabling software to convert between UTC and local times accurately. The scope of the tz database encompasses over 400 representative time zones, partitioning the world into regions where local clocks synchronize since the epoch of , 1970. This includes detailed transitions for DST observance, permanent offsets, and historical shifts due to political or legal decisions, though pre-1970 data is provided selectively for continuity in location-specific zones rather than exhaustive coverage. By focusing on verifiable rules, it supports applications in diverse fields like scheduling, logging, and without relying on vendor-specific or datasets. Maintained collaboratively under procedures outlined in RFC 6557, the database tracks worldwide legal changes to time observance, such as new DST policies or boundary adjustments, with releases issued multiple times annually to ensure timeliness. This ongoing effort reflects its role as a , authoritative resource for developers and systems integrating functionality.

Key concepts

In the tz database, a timezone is defined as a geographical region where civil-time clocks have synchronized their offsets from (UTC) and (DST) observance since 1970, ensuring uniform local time across the area. This includes a base , which represents the standard difference from UTC (e.g., -5 hours for Eastern Standard Time), and DST rules that specify temporary adjustments, such as advancing clocks by one hour during designated periods to extend evening daylight. These elements capture political and legal decisions on timekeeping, rather than natural solar variations, allowing software to compute accurate local times for historical and future dates within the zone. Civil time, as tracked by the tz database, refers to the legally mandated time observed in and , distinct from astronomical time, which is derived from the and solar position (e.g., mean solar time). The database focuses exclusively on scales, incorporating adjustments like leap seconds and political changes to align with societal observance, whereas astronomical time prioritizes celestial events without regard for legal standards. This emphasis ensures that computations reflect the time people actually use, such as for scheduling or records, rather than purely scientific measurements. In tz database computations, POSIX time typically denotes a UTC-based (e.g., seconds since the Unix of 1970-01-01 00:00:00 UTC), serving as a neutral, absolute reference for global synchronization. Wall time, in contrast, is the local civil time displayed on clocks in a specific timezone, incorporating the and any active DST to produce the observable "wall clock" reading. The tz code facilitates conversions between these, enabling applications to interpret POSIX timestamps as wall times while handling ambiguities like DST transitions, where a single wall time might correspond to multiple POSIX instants. The tz database distinguishes zones as logical groupings of regions sharing identical timekeeping rules, often named after a representative city (e.g., "America/New_York" for the ), from locations, which are specific geographical points or areas mapped to those zones. Zones encapsulate the abstract rules and history applicable to multiple locations, promoting consistency in software, while locations provide the concrete geographical context, such as assigning "Europe/London" to the United Kingdom's territory. This separation allows the database to model complex boundaries and changes without duplicating rule sets for every minor area.

Data Structure

Timezone definitions

In the tz database, a timezone is conceptually defined as a sequence of UTC offsets and associated transition rules that dictate how is computed for a given over historical and future periods. This structure captures the evolution of , including changes due to (DST) and permanent adjustments to standard offsets, ensuring that the database reflects accurate timestamps from the POSIX epoch onward. The database logically partitions the world into distinct timezones, where all locations within a single zone maintain identical local clock times at any given moment after 1970-01-01 00:00:00 UTC. This partitioning prioritizes regions where clocks synchronize uniformly, often aligning with political jurisdictions rather than strict geographical features, as governmental decisions govern time observance. Timezone definitions include standardized abbreviations, such as for Eastern Standard Time or EDT for Eastern Daylight Time, to denote the local time in use during specific periods. However, these abbreviations are not unique identifiers, as the same three- or four-letter codes can apply to multiple unrelated zones (e.g., for Central Standard Time in versus Standard Time), rendering them ambiguous for precise identification. Instead, the database relies on location-based names, such as America/New_York, to unambiguously label these definitions.

File formats

The tz database is distributed in multiple file formats to support both human-readable source data and efficient runtime access. The primary source files are plain text, written in a syntax processed by the zic compiler to generate binary zoneinfo files. Additionally, auxiliary files like zone.tab, zone1970.tab, and zonenow.tab provide mappings for geographical and country-based queries, with zone.tab covering general locations, zone1970.tab focusing on pre-1970 data, and zonenow.tab addressing current and predicted zones; specialized files handle historical and leap second data. The source text files, such as those for individual regions (e.g., northamerica), use a structured input format for the zic compiler. These consist of Zone lines, which define timezone names, standard offsets from UTC, references to rule sets, abbreviation formats, and optional until clauses for transitions, and Rule lines, which specify daylight saving time rules including start and end years, months, days, times, and abbreviation suffixes. This syntax enables the compilation of historical and future timezone transitions into a compact representation. Compiled zoneinfo files follow the Time Zone Information Format (TZif), a binary standard that supports both 32-bit and 64-bit representations. In TZif version 1, transition times are stored as 32-bit signed integers representing seconds since the (1970-01-01 00:00:00 UTC), limiting the range to approximately 1901–2038; 2 and 3 extend this to 64-bit integers for a vastly larger temporal scope of about 292 billion years in either direction, while 4 (as of ) adds optional leap-second table truncation and expiration features. Offsets from UTC and daylight saving indicators are encoded as 32-bit signed integers in seconds within local time type records, accompanied by fields for transition counts, type indices, designations (abbreviations), and corrections. The format includes a fixed header with and count fields, followed by blocks and an optional -compatible footer in higher . The zone.tab file serves as a tabular index mapping country codes to timezone identifiers, including coordinates in degrees and minutes (e.g., +404251-0740023 for 40°42'51"N 74°00'23"W) and optional comments. Each line contains four tab-separated fields: country code, coordinates, timezone name, and comments, facilitating applications that need location-based timezone lookups. Pre-1970 historical data, which is less standardized and potentially less accurate, is maintained in a separate source file called backzone to isolate it from the main post-1970 coverage. Leap seconds are tracked in a dedicated leapseconds file, formatted as lines with fields for the leap occurrence date (year, month, day, time as 23:59:60 UTC), correction sign (+ for insertion), and status (S for stationary), derived from IERS bulletins. This file supports systems requiring precise UTC-to-TAI conversions but is not integrated into standard zoneinfo binaries.

Zone naming

The zone names in the tz database follow a standardized hierarchical format of AREA/LOCATION, where AREA typically denotes a continent, ocean, or broad region (such as America for both North and South America, Africa, Asia, Europe, Atlantic, Indian, Pacific, Australia, Antarctica, or Arctic), and LOCATION specifies a city or other representative place within that area. This convention, designed by Paul Eggert, ensures that each name uniquely identifies a timezone applicable since 1970, when coordinated universal time became prevalent, while indicating a typical location of clocks observing that timezone for expert users. The selection of names adheres to specific criteria to promote stability and neutrality: they must be robust against political changes by avoiding direct ties to country names, comply with filename rules (using only ASCII letters, periods, hyphens, underscores, limited to 14 characters without digits or leading hyphens), and prioritize compact, populous, and well-known locations—often the largest city in the zone—to serve as stable representatives. For instance, America/New_York is chosen over other U.S. Eastern Time cities due to New York's prominence, and Asia/Shanghai represents Standard Time rather than the capital for its larger population and historical significance. These guidelines evolved from earlier rules, such as requiring at least one name per country code, which were abandoned to better accommodate complex regional variations. Special cases include the Etc/ area for fixed-offset zones and UTC variants, defined in the etcetera source file to support platforms requiring leap second information or simple offsets like Etc/UTC and Etc/GMT (noting that GMT here denotes a fixed offset, not Greenwich Mean Time). Backward compatibility is maintained through the backward source file, which creates symbolic links from obsolete names (e.g., US/Eastern or Asia/Calcutta) to current ones (e.g., America/New_York or Asia/Kolkata, renamed in 2008 to reflect official spelling changes), ensuring legacy software continues to function without disruption. Name changes are rare and occur only when necessary, such as for accuracy or geopolitical updates, with old aliases preserved indefinitely.

DST rules

In the tz database, daylight saving time (DST) transitions are defined using Rule lines in the source files, which specify the start and end dates, times, and offsets for advancing or setting back clocks from standard time. These rules enable the database to model periods of DST observance, where local time is typically shifted forward by one hour (or sometimes more) during warmer months to conserve energy or align with social patterns. Each Rule line applies to a contiguous range of years and can represent either the onset of DST (spring-forward) or its cessation (fall-back), with the SAVE field indicating the offset from standard time, such as +1:00 for a one-hour advance. The structure of a Rule line is: <NAME> <FROM> <TO> <TYPE> <IN> <ON> <AT> <SAVE> <LETTER>/<S>, where <NAME> identifies the rule set (e.g., for rules), <FROM> and <TO> delimit the applicable years (e.g., 1987 or max for ongoing), <TYPE> is typically a , <IN> specifies the month (e.g., ), <ON> defines the day (e.g., lastSun or 15), <AT> sets the transition time (e.g., 2:00), <SAVE> denotes the time shift, and <LETTER> provides the abbreviation suffix (e.g., D for DST). Rule sets consist of one or more such lines to cover historical and predicted changes, allowing for complex patterns like double DST or wartime adjustments. DST rules fall into several types based on recurrence: annual patterns using relative day specifiers like lastSun in a given month for recurring transitions (e.g., the last of ); fixed-date rules for one-off or periodic exact dates (e.g., Sep 30); or no rules at all for zones without DST, indicated by a zero offset in the Zone file. For instance, a syntax example for a recurring DST start might appear as EU 1996 max - Mar lastSun 1:00u 1:00 D, specifying a UTC-based time to precisely define the shift. These types accommodate diverse global practices, from biannual shifts in to year-round DST in some regions. Transition times are computed relative to local wall clock time by default, meaning the specified hour (e.g., 2:00) refers to the time as shown on clocks before the change, but a 'u' suffix (e.g., 2:00u) interprets it in UTC to ensure consistency across zones. This distinction is crucial for handling ambiguities during fall-back transitions, where clocks retreat (e.g., from 3:00 DST to 2:00 standard), creating a one-hour period that occurs twice; the database resolves this by applying the transition to the earlier wall-clock instance, treating later duplicates as post-transition standard time until the next change. Spring-forward transitions avoid such overlaps but skip the advanced hour entirely. Rules are often shared rather than duplicated, with Zone entries referencing a name in their RULES field (e.g., -5:00 US E%sT) to apply the same DST logic across multiple locations, promoting consistency for regions like the or that follow unified policies. This referencing mechanism supports the database's goal of covering over 400 zones while minimizing in DST specifications.

Example entries

To illustrate the structure of the tz database, consider the Zone entry for America/New_York, which represents the in the and . A representative Zone line from the source files is: Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58 -5:00 US E%sT. This defines the initial (LMT) offset of -4:56:02 until November 18, 1883, at 12:03:58 , after which it adopts a -5:00 standard offset (, EST) and applies US-specific rules for transitions, formatting as EST or EDT (Eastern Daylight Time). Complementing this, lines specify (DST) transitions. For the period from 1967 to 2006, key rules include: Rule US 1967 2006 - Oct lastSun 2:00 0 S for ending DST on the last Sunday in at 2:00 (saving 0 hours, letter S for standard), and Rule US 1967 1973 - Apr lastSun 2:00 1:00 D for starting DST on the last Sunday in at 2:00 (saving 1 hour, letter D for daylight). Later refinements, such as Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D, adjusted the spring transition to the first Sunday on or after April 1. These rules link to the Zone entry via the "US" reference, dictating when offsets shift between -5:00 () and -4:00 (EDT). The zic compiler processes these Zone and Rule lines into binary zoneinfo files, compiling them into a sequence of transitions represented as timestamps (in UTC) with associated offsets, abbreviations, and DST indicators. For America/New_York, this results in discrete entries for each historical change, such as the 1967-04-30 06:00 UTC transition to EDT (corresponding to 2:00 local standard time on the last Sunday in April). The binary format stores these as an array of transition times followed by type descriptors (offset, DST flag, abbreviation index), enabling efficient lookups for any given date without recalculating rules. Examples like these highlight significant policy shifts, such as the 2007 US DST extension under the , which advanced the start to the second Sunday in March (Rule US 2007 max - Mar Sun>=8 2:00 1:00 D) and delayed the end to the first Sunday in November (Rule US 2007 max - Nov Sun>=1 2:00 0 S), adding about a month of DST annually and requiring tz database updates to reflect the new transitions in affected zones.

Historical data

The tz database incorporates historical time information prior to 1970 primarily through the backzone file, which documents clock transitions for zones that align with standard zones after 1970 but diverge earlier. This file supports applications processing pre-1970 timestamps, though it covers only a limited portion of global clock behaviors due to the era's sparse and fragmented records. The zone.tab file lists each timezone with approximate coordinates, chosen to represent the zone's historical significance, such as major cities or former capitals where time practices originated or were documented. These coordinates aid in mapping zones to geographical locations while preserving a connection to their pre-1970 context. Pre-1970 data in the database faces significant limitations, including no representation of before 1910 in most zones, as such practices were uncommon and poorly recorded; earlier periods rely on approximations derived from incomplete or contradictory sources, often leading to inaccuracies. The database also addresses specific anomalies, such as the omission of a leap day in 1900, treating the year as non-leap in accordance with rules to ensure consistent timestamp handling.

Geographical Coverage

Zone assignments

The tz database maps geographical areas to timezone zones primarily based on political units and observance established after 1970, the , to ensure consistency in for computational purposes. This assignment prioritizes regions where local clocks have agreed on without variation since that date, using the zone1970.tab file as a central index that associates each zone with one or more country codes representing the relevant political entities. In cases where a country or region maintains a uniform civil time across its territory post-1970, the database designates a single representative zone, selected based on the location with the largest population to maximize practical utility for users. For instance, the zone Pacific/Auckland is assigned to cover most of , reflecting the standard time observed nationwide. Larger or diverse countries may have multiple zones, but the principle remains to align with post-1970 political boundaries and observed practices. The resulting coverage spans over 400 zones for more than 250 countries and territories under the standard, extending beyond landmasses to include oceanic regions (such as for Kiribati's atolls) and Antarctic research stations (such as for the ). While the core zone assignments emphasize post-1970 reliability, the separate backzone file offers provisional extensions for pre-1970 historical data in select locations.

Multi-country zones

In the tz database, multi-country zones are defined as timezone entries that encompass locations across multiple nations or territories, where civil clocks have synchronized since despite national boundaries. This approach prioritizes practical alignment of timekeeping over strict geopolitical divisions, particularly for regions with uniform offsets and (DST) rules post-1970. Such zones typically arise from historical, geographical, or administrative factors that lead to shared temporal practices, allowing the database to consolidate efficiently without fragmenting entries for every minor jurisdictional difference. Reasons for these multi-country zones often trace back to colonial legacies, where former empires imposed consistent time standards across territories that later became independent nations, or to small island groups and archipelagos divided by modern borders but operating under identical rules. For instance, colonial influences in resulted in broad synchronization across former protectorates, while small islands in the or Atlantic may share offsets due to their isolation and limited administrative divergence. Disputed or fluid border areas, such as enclaves or overseas territories, can also contribute to overlap, as the database focuses on clock behavior rather than resolving territorial claims. Names for these zones deliberately avoid direct country affiliations to accommodate potential political changes, such as transfers of . Representative examples illustrate this phenomenon. The zone Africa/Nairobi applies to a wide swath of , including (KE), (DJ), (ER), (ET), (KM), (MG), (SO), (TZ), (UG), and (YT), reflecting a shared UTC+3 offset with no DST since 1970, rooted in regional economic and colonial ties under and administration. Similarly, /Zurich covers (CH), parts of (DE), and (LI), encompassing the German enclave of , where time rules align due to geographic proximity and historical integration within the (CET) framework. Another case is /Brussels, which spans (BE), (LU), and the (NL), unified by EU-harmonized CET observance and DST transitions. These zones highlight how the database captures post-1970 consensus in densely interconnected regions like . As of the 2025b release, 47 such multi-country zones exist in the tz database, representing a minority of the total entries but crucial for covering expansive or fragmented areas with identical time behaviors. Challenges in maintaining these include the risk of future splits: if one country deviates from the shared rules—due to policy shifts, movements, or bilateral agreements—the zone may need division to preserve accuracy, potentially complicating software implementations and historical queries. Maintainers monitor for such divergences, as seen in past adjustments for regions like the former Soviet states, ensuring the database remains predictive for scales.

Pre-1970 coverage

The tz database's coverage of time zones before 1970 is intentionally limited and incomplete, reflecting the challenges of reconstructing historical from scattered, often unreliable sources. While the database records clock transitions for major locations in location-based time zones to support pre-1970 timestamps in systems, it does not aim for comprehensive accuracy across all regions or eras. Data prior to 1970 draws from diverse inputs, including government , astronomical almanacs, and even uncited astrology texts, but much historical clock behavior remains unrecorded or lost. Geographical emphasis lies heavily on Europe and North America, where documentation is relatively abundant due to earlier industrialization and centralized record-keeping. For non-Western regions before 1900, coverage is particularly sparse, as many areas lacked formalized time systems influenced by local solar time or irregular practices rather than standardized zones. This disparity stems from the global spread of mean time originating in Western contexts, leaving equatorial and other non-Western locales with minimal or approximated entries based on colonial or trade influences. Notable inclusions highlight pivotal developments, such as the railroad-driven standardization of time in , where U.S. and Canadian railways adopted four continental zones on November 18, 1883, to synchronize schedules and reduce confusion from over 100 local times. Similarly, the database captures early experiments, including Germany's pioneering implementation on April 30, 1916, which advanced clocks by one hour during to conserve energy, followed by adoption in other nations. These entries focus on urban or infrastructural centers rather than uniform regional application. Coverage gaps are pronounced: uninhabited regions, such as polar areas or remote islands, receive no dedicated zones since local is undefined there. Colonial territories often rely on approximations tied to the colonizing power's time or major ports, ignoring or peripheral variations. The backzone , dedicated to pre-1970 data, includes approximately 100 transitions across its zones—far fewer than the thousands post-1970—underscoring the database's role as a partial historical rather than an exhaustive archive.

Maintenance and Updates

Procedures

The maintenance of the tz database is coordinated by the (IANA), with Paul Eggert serving as the primary TZ Coordinator and Tim Parenti as the secondary, both designated by the Internet Engineering Steering Group (IESG) based on community consensus. This team oversees updates to reflect changes in across the world, drawing from authoritative sources such as gazettes, official , and reliable reports on time zone boundaries and rules. Proposed changes and bug reports are reviewed through a public process on the tz at [email protected], where community members submit and discuss updates before the TZ Coordinator finalizes decisions to ensure consensus and accuracy. The database source files, written in a specialized text format, are then compiled into machine-readable TZif binary files using the , which is part of the code distributed alongside the data. Releases occur several times per year, typically 3 to 5, and are made available via the IANA and , with the tz code (including zic) and data files provided separately in tarballs, along with cryptographic signatures for verification. For instance, the 2025b release incorporated updates to several zones based on recent governmental announcements.

Version history

The tz database was first publicly released in by Arthur David Olson, providing a standardized compilation of and data for use in computer systems worldwide. Subsequent releases have addressed evolving rules, with updates initially sporadic but evolving into a more regular cadence; by 2025, over 100 versions have been produced to capture global changes and refine historical records. A significant milestone occurred in 1993, when the database's zone naming conventions were standardized and effectively frozen to promote long-term across software implementations. In 2013, responsibility for maintaining the database transferred to the (IANA) under Best Current Practice 175 (BCP 175, 6557), ensuring coordinated stewardship aligned with standards. Releases are now typically issued biannually or more frequently as needed, focusing on rule updates for current and predicted transitions, such as the 2020 debate over discontinuing , which prompted temporary adjustments to future offsets until the proposal was postponed indefinitely. Historical corrections form another core category of changes, often revising pre-1970 data based on archival research to improve accuracy despite inherent uncertainties in older records. The 2024a release incorporated Mexico's ongoing shifts away from daylight saving time in non-border regions, aligning with legislative abolition effective from 2023. The 2025a release addressed Paraguay's adoption of permanent UTC-03 offset starting in spring 2024, along with updates to the leap seconds table per International Earth Rotation and Reference Systems Service announcements. Issued in March 2025, the 2025b release comprised minor fixes, including refinements to zone boundaries and historical transitions. All modifications are documented and rationalized in the accompanying file, serving as a comprehensive guide to the database's design principles and update procedures.

Implementation and Usage

Unix-like systems

On systems, the tz database is typically distributed and installed as the tzdata package, which places compiled timezone information files in the /usr/share/zoneinfo directory. These files, known as zoneinfo files, follow the TZif format and represent historical and projected data for various locations worldwide. The package is maintained by operating system distributions and updated periodically to reflect changes in time zone rules, ensuring compliance with local laws and conventions. Time-related system functions integrate directly with these zoneinfo files for accurate local time computations. For instance, the tzset() function initializes timezone data by parsing the TZ or defaulting to the system's /etc/localtime symlink, which points to a zoneinfo file. Functions such as then use this data to convert Unix timestamps (time_t) into broken-down structures, accounting for offsets, transitions, and historical rules. While gettimeofday() retrieves the current wall-clock time and an obsolete timezone structure, the actual timezone interpretation relies on the tz database via these higher-level functions, enabling POSIX-compliant time handling across applications. Configuration of the active timezone occurs primarily through the , which specifies a zoneinfo relative to /usr/share/zoneinfo, such as TZ=America/Los_Angeles for Pacific Time. Setting this —either temporarily for a or persistently in shell profiles like ~/.profile—affects all subsequent time queries in that environment, overriding the system default without requiring root privileges. For custom timezones, the zic compiler tool textual input files describing rules, zones, and links to generate bespoke TZif files, which can then be placed in a private directory and referenced via TZ. This approach ensures flexibility while maintaining compatibility, as the tz database extends standard TZ strings with richer historical and predictive capabilities.

Software integrations

The tz database is widely integrated into various programming libraries and frameworks to provide accurate time zone handling across different software ecosystems. For instance, the (ICU) library derives its system time zones directly from the tz database, enabling cross-platform support for features in applications that require precise representations. Similarly, 's TimeZone class and the broader java.time package in the JDK bundle a copy of the tz data, with versions such as 2025b included in Java 24 to ensure compatibility with historical and future time zone rules; the TZUpdater allows for runtime updates to this bundled data without requiring a full JDK reinstallation. In Python, the pytz library incorporates the Olson tz database to facilitate timezone-aware datetime operations, supporting accurate conversions and localization for scripts and applications running on 2.4 and later. More recently, 3.9 introduced the zoneinfo in the standard library, which provides a native implementation backed by the IANA time zone database, promoting it as the preferred method over third-party libraries for modern development. Databases like leverage the tz database for its timestamp with time zone (timestamptz) data type, which internally uses IANA Olson rules to store and retrieve UTC-normalized timestamps while displaying them in the session's configured , ensuring consistency across global deployments. In , JavaScript's Intl , particularly Intl.DateTimeFormat, relies on IANA time zone identifiers from the tz database to format dates and times locale-sensitively in browsers, with mandatory support for UTC and optional recognition of other zones like America/New_York. The tz database also informs standards for time-related protocols and formats. RFC 6557 outlines procedures for maintaining the tz database, providing a framework that influences its use in network protocols requiring synchronized data across distributed systems. For ISO 8601-compliant timestamps, which specify date and time with optional offsets, the tz database supplies the underlying historical offset and rules to generate accurate representations in various locales, bridging the standard's offset-based notation with dynamic behaviors. These integrations, often building on the tz database's origins in zoneinfo files, ensure robust handling of transitions and political changes in time zone policies.

Extensions

The tz database has been extended through the development of geographical boundary representations, primarily derived from the coordinates listed in its zone.tab file, which provides points for representative locations within each time zone. These coordinates enable the creation of s that delineate time zone polygons, often by integrating with external geographic data sources such as to approximate boundaries. For instance, the tz_world compiles worldwide time zone boundaries as polygon geometries, facilitating geospatial analysis and visualization beyond the database's core tabular format. Tools like tzmap leverage these shapefiles to generate interactive maps of time zones, overlaying boundaries on global projections and updating them to match releases such as tzdb 2025b. Such extensions allow users to query spatial relationships, for example, by referencing zone.tab coordinates to assign zones to specific latitudes and longitudes. The Time Zone Boundary Builder project, initiated around and actively maintained, with the latest release in September 2024, exemplifies this by extracting data to produce detailed shapefiles, including territorial waters, and enabling visualizations of historical changes in boundaries. Derived applications include GPS-based lookups that map coordinates to tz database zones, commonly integrated into mobile apps for automatic detection. On devices, for example, location services use preloaded boundary data to determine the appropriate zone without relying on queries, enhancing features like automatic clock adjustments during travel. apps similarly employ tied to tz database rules to fetch information from coordinates, often caching results for offline use. These implementations rely on the database's zone identifiers to ensure consistency across platforms. A key limitation of these extensions is that time zone boundaries in the tz database inherently follow political and administrative divisions rather than strict geographical or longitudinal lines, leading to irregular shapes influenced by economic, social, and legislative factors. As a result, shapefiles and tools require annual updates to reflect changes in laws or borders, such as new daylight saving rules or territorial adjustments, which the core database tracks but does not spatially encode. This political dependency can introduce inaccuracies in purely geographic derivations, necessitating ongoing maintenance from sources like .

History

Origins

The tz database, also known as the zoneinfo or Olson database, originated in 1986 when Arthur David Olson developed it as part of enhancements to the time-handling functions in (BSD) Unix. This effort took place in collaboration with the , where Olson, a researcher at the , created a standardized, machine-readable compilation of and (DST) rules. The database's name derives from the TZ environment variable in Unix systems, which specifies time zone configurations, reflecting its initial integration into the operating system's core time conversion routines. The primary motivation was to provide accurate and portable handling of civil time data for software applications, particularly on Unix-like systems using 32-bit time representations that could encounter errors from inconsistent or undocumented DST transitions and time zone offsets. Prior to this, Unix time functions like ctime relied on simplistic, hardcoded assumptions about time zones, leading to inaccuracies as governments frequently altered DST rules without clear historical records. By compiling data into a structured format, Olson aimed to mitigate these issues, ensuring reliable conversions between local time and Coordinated Universal Time (UTC) starting from the POSIX epoch of January 1, 1970. This approach anticipated challenges similar to those in the later Year 2000 (Y2K) problem, where epoch-based calculations could fail due to unhandled temporal complexities. Initially, the database focused on North American time zones, reflecting the developers' primary context and the immediate needs of BSD users in that region. It first appeared in the 4.3BSD release in June 1986, distributed via and integrated into the system's functions such as localtime and mktime. By the early 1990s, contributions from a growing community of volunteers, including Paul Eggert who became involved around 1991, expanded its scope to cover representative locations worldwide, incorporating historical data and predictions for adjustments driven by political decisions. This global extension solidified the tz database as a foundational resource for cross-platform .

Transitions and controversies

In 2011, Inc., a producing astrology software, filed a lawsuit against tz database maintainers Arthur David Olson and Paul Eggert, alleging that the database incorporated factual timezone data from Astrolabe's copyrighted ASC atlas without permission. The suit prompted the temporary removal of the database from its host at the , disrupting access for users worldwide. Astrolabe voluntarily dismissed the case in February 2012 after intervention by the , which argued that copyright does not protect factual compilations like timezone offsets and (DST) rules. The lawsuit highlighted the vulnerabilities of the database's prior personal maintenance model, leading to its handover to the (IANA) in late 2011 for greater institutional stability and to prevent single points of failure. This transition was formalized through RFC 6557 in 2012, which established procedures for ongoing maintenance by designated coordinators, ensuring collaborative updates while preserving the database's status. The tz database has faced controversies over naming conventions, particularly when updating location names to reflect official changes. For instance, in 2008, the entry for India's standard time zone was renamed from Asia/Calcutta to Asia/Kolkata to align with the city's official renaming in 2001, though the original name was retained as a backward-compatibility link; this adjustment sparked discussions on balancing historical accuracy with modern in software systems. Similar debates have arisen with other renamings, emphasizing the database's policy against frequent changes to avoid breaking legacy applications. Proposals to abolish DST in various regions have also generated contention, as they require precise updates to avoid errors in global systems. In , the Volgograd region's abolition of DST in late 2020—effective from 2021—was incorporated via a rapid tzdata 2021a release to reflect the shift to permanent without transitions. This update was part of broader 2021 tensions, when maintainer Paul Eggert proposed merging time zones with identical post-1970 rules (including some Russian ones) to streamline the database, prompting backlash over potential compatibility breaks and threats of forking the project. The proposal was ultimately scaled back to preserve distinct entries where political or historical distinctions mattered.

References

  1. [1]
    Time Zone Database
    The Time Zone Database (often called tz or zoneinfo) contains code and data that represent the history of local time for many representative locations around ...Described in the code repository · Tz · Info | tz-announce@iana.org
  2. [2]
    Time zone and daylight saving time data
    ### Summary of tz Database History, Origins, and Maintenance
  3. [3]
    RFC 6557: Procedures for Maintaining the Time Zone Database
    **Summary of RFC 6557: Procedures for Maintaining the Time Zone Database**
  4. [4]
    Time Zone Database - ICU - International Components for Unicode
    The Time Zone Database is now hosted by the Internet Assigned Numbers Authority (IANA) ( http://www.iana.org/time-zones ).
  5. [5]
    zone.tab
    ... TZ comments AD +4230+00131 Europe/Andorra AE +2518+05518 Asia/Dubai AF +3431+06912 Asia/Kabul AG +1703-06148 America/Antigua AI +1812-06304 America/Anguilla ...
  6. [6]
    RFC 6557: Procedures for Maintaining the Time Zone Database
    This memo specifies procedures involved with maintenance of the TZ database and associated code, including how to submit proposed updates.
  7. [7]
    Time zone and daylight saving time data - UCLA Computer Science
    Each main entry in the database represents a timezone for a set of civil-time clocks that have all agreed since 1970. Timezones are typically identified by ...
  8. [8]
    Theory and pragmatics of the tz code and data
    ### Summary of File Formats in the tz Database
  9. [9]
    zic(8) - Linux manual page - man7.org
    The zic program reads text from the file(s) named on the command line and creates the timezone information format (TZif) files specified in this input. If a ...Missing: backzone | Show results with:backzone
  10. [10]
    RFC 8536: The Time Zone Information Format (TZif)
    ### Summary of TZif Binary Format (RFC 8536)
  11. [11]
    leapseconds
    # This file is in the public domain. # This file is generated automatically from the data in the public-domain # NIST/IERS format leap-seconds.list file, which ...
  12. [12]
    Theory and pragmatics of the tz code and data
    ### Summary of Zone Naming Conventions and Related Information from https://data.iana.org/time-zones/tzdb-2025b/theory.html
  13. [13]
    How to Read the tz Database Source Files
    This page uses the America/Chicago and Pacific/Honolulu zones as examples of how to infer times of day from the tz database source files.
  14. [14]
    How to Read the tz Database
    ### Summary of tz Database Content for America/New_York and US DST Rules (1967-2006) with 2007 Extension
  15. [15]
    tzfile(5) - Linux manual page - man7.org
    The timezone information files used by tzset(3) are typically found under a directory with a name like /usr/share/zoneinfo. These files use the format described ...
  16. [16]
    Daylight Saving Time Rules | NIST
    Mar 2, 2010 · What are the current rules for daylight saving time? The rules for DST changed in 2007 for the first time in more than 20 years. The new ...
  17. [17]
    backzone
    # This file contains data outside the normal scope of the tz database, # in that its zones do not differ from normal tz zones after 1970. # Links in this file ...
  18. [18]
    Theory and pragmatics of the tz code and data
    Scope of the tz database. The tz database attempts to record the history and predicted future of civil time scales. It organizes time zone and daylight ...
  19. [19]
    Theory and pragmatics of the tz code and data
    ### Conceptual Definition of Timezones in tz Database
  20. [20]
    None
    ### Time Zones with Multiple Country Codes
  21. [21]
  22. [22]
    History of Time Zones and Daylight Saving Time (DST)
    Jan 17, 2023 · Five time zones were officially adopted as the US entered World War I: the Eastern, Central, Mountain, Pacific, and Alaska zones, all of which are still in use ...Missing: limitations pre- 1970 1910
  23. [23]
    RFC 6557 - Procedures for Maintaining the Time Zone Database
    This memo specifies procedures involved with maintenance of the TZ database and associated code, including how to submit proposed updates.
  24. [24]
    The Database Of The Time Lords | Hackaday
    Nov 20, 2017 · Since 1986, the loose amalgamation of time zone volunteers grew, and in 1993, a proposal for standardized names for time zones was submitted ...
  25. [25]
    Index of /time-zones/releases
    tzcode2021c.tar.gz.asc, 2021-10-01 22:25, 833 ; tzcode2021d.tar.gz, 2021-10-15 21:20, 267K ; tzcode2021d.tar.gz.asc, 2021-10-15 21:20, 833.
  26. [26]
    None
    ### Summary of tz Database Content
  27. [27]
  28. [28]
    Directive discontinuing seasonal changes of time | Legislative Train ...
    The report argues for a final switch to summer time at the end of March 2021, before a possible final time change at the end of October 2021.
  29. [29]
    [tz-announce] 2024a release of tz code and data available - MM
    Feb 1, 2024 · The 2024a release of the tz code and data is available. This release contains the following changes: Briefly: Kazakhstan unifies on UTC+5 beginning 2024-03-01.
  30. [30]
  31. [31]
    The Time Zone Database Package (tzdata) review for 2024
    Dec 20, 2024 · The tzdata package contains the data files describing current and historic transitions for various time zones worldwide.
  32. [32]
    tzset(3) - Linux manual page
    ### Summary: How `tzset` and `localtime` Use Zoneinfo Files from TZ Database on Unix-like Systems
  33. [33]
  34. [34]
    How to set TZ environment variable in Linux / Unix - nixCraft
    Apr 5, 2024 · Explains how to use the TZ variable to set timezone under Linux / BSD / macOS (OS X) / UNIX using a bash or any other shell profile file.
  35. [35]
    zic(8) - Linux manual page - man7.org
    The zic program reads text from the file(s) named on the command line and creates the timezone information format (TZif) files specified in this input.Missing: tool custom
  36. [36]
    Date/Time | ICU Documentation
    The ICU system time zones are derived from the tz database (also known as the “Olson” database) at ftp://elsie.nci.nih.gov/pub. This is the data used across ...
  37. [37]
    Timezone Data Versions in the Java Runtime - Oracle
    Information on the latest TZData is available on the IANA TZdata page. TZUpdater allows users to update the time zone data in the JDK/JRE with data from IANA.
  38. [38]
    Timezone Updater Tool - Oracle
    The TZUpdater tool is provided to allow you to update installed Java Development Kit (JDK) and Java Runtime Environment (JRE) software with more recent timezone ...Missing: integration | Show results with:integration
  39. [39]
    pytz · PyPI
    pytz brings the Olson tz database into Python. This library allows accurate and cross platform timezone calculations using Python 2.4 or higher.
  40. [40]
    zoneinfo — IANA time zone support — Python 3.14.0 documentation
    The `zoneinfo` module provides a concrete time zone implementation to support the IANA time zone database, using system data or the tzdata package.
  41. [41]
    Documentation: 18: 8.5. Date/Time Types - PostgreSQL
    A full time zone name, for example America/New_York . The recognized time zone names are listed in the pg_timezone_names view (see Section 53.34).
  42. [42]
    Intl.DateTimeFormat() constructor - JavaScript - MDN Web Docs
    Sep 24, 2025 · Normally, Intl.DateTimeFormat() can be called with or without new, and a new Intl.DateTimeFormat instance is returned in both cases.Intl.Locale · Format() · Date · supportedLocalesOf
  43. [43]
    A shapefile of the TZ timezones of the world - Efele.net
    The tz_world shapefile (zip, sha1) captures the boundaries of the TZ timezones across the world. The geometries are all POLYGONs, and a TZ timezone will ...
  44. [44]
    World Time Map - LGM
    World Time Map. LGM.CL - Tools - World Time Map. Updated to 2018g. Shapes mainly from Open Street Map via Evan Siroky's Timezone Boundary Builder.
  45. [45]
    evansiroky/timezone-boundary-builder - GitHub
    The goal of this project is to produce a shapefile with the boundaries of the world's timezones using OpenStreetMap data.Missing: colonies approximations
  46. [46]
    Timezone Visualization - Alex Harsányi
    May 18, 2019 · The timezone-boundary-builder project publishes GeoJSON files with timezone boundaries based on OpenStreetMap data.Loading And Inspecting The... · Racket Drawing Toolkit... · Rendering A Subset Of The...
  47. [47]
    Location time zone detection | Android Open Source Project
    Oct 9, 2025 · An optional automatic time zone detection feature that lets devices use their location and time zone map data to determine the time zone.
  48. [48]
  49. [49]
    Time Zone Boundaries - OpenStreetMap Community Forum
    Jun 12, 2016 · Technically, the tz database tracks a time zone's various additions and removals past a certain date. It has a separate entry for America/ ...
  50. [50]
    [PDF] 2012-01-11 3 Olson Memo ISO Rule 11 Mot (_FINAL_)
    Jan 11, 2012 · Declaration of Arthur Olson. (“Olson Decl.”) 2-3. Mr. Olson maintained the database until October 2011, along with Dr. Eggert and many ...
  51. [51]
  52. [52]
    Astrolabe v. Olson - Electronic Frontier Foundation
    Jan 12, 2012 · In September of 2011, an astrology software company called Astrolabe filed suit against Arthur David Olson and Paul Eggert, researchers who ...
  53. [53]
    Time zone database suit withdrawn - LWN.net
    Feb 23, 2012 · EFF threatened to file a Rule 11 proceeding against Astrolabe, which is how you penalize both the attorney and the client for a frivolous suit.Missing: v. 2013
  54. [54]
    Time-zone database down - Stephen Colebourne's blog
    Oct 6, 2011 · Update 2011-10-26: The situation has now stabilised. The database is now hosted by IANA after the succesful database reboot. Astrolabe also gave ...
  55. [55]
    RFC 6557 - Procedures for Maintaining the Time Zone Database
    Oct 14, 2015 · This memo specifies procedures involved with maintenance of the TZ database and associated code, including how to submit proposed updates.
  56. [56]
    pgsql: Update time zone data files to tzdata release 2021a.
    Oct 9, 2025 · Update time zone data files to tzdata release 2021a. DST law changes in Russia (Volgograd zone) and South Sudan.
  57. [57]
    A fork for the time-zone database? - LWN.net
    Sep 28, 2021 · The time-zone database is meant to track time-zone information worldwide for time periods starting at the Unix epoch of January 1, 1970. But, ...
  58. [58]
    tz database community up in arms over time zone merges
    Sep 28, 2021 · "This does not affect post-1970 timestamps, and timezone historians who build with 'make PACKRATDATA=backzone' should see no changes to pre-1970 ...