uawdijnntqw1x1x1
IP : 216.73.216.110
Hostname : 6.87.74.97.host.secureserver.net
Kernel : Linux 6.87.74.97.host.secureserver.net 4.18.0-553.83.1.el8_10.x86_64 #1 SMP Mon Nov 10 04:22:44 EST 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
emeraadmin
/
www
/
node_modules
/
form-data
/
..
/
summernote
/
..
/
function-bind
/
..
/
..
/
4d695
/
tzdata.tar
/
/
README000064400000004640151706426130005435 0ustar00README for the tz distribution “Where do I set the hands of the clock?” – Les Tremayne as The King “Oh that – you can set them any place you want.” – Frank Baxter as The Scientist (from the Bell System film “About Time”) The Time Zone Database (called tz, tzdb or zoneinfo) contains code and data that represent the history of local time for many representative locations around the globe. It is updated periodically to reflect changes made by political bodies to time zone boundaries, UTC offsets, and daylight-saving rules. See <https://www.iana.org/time-zones/repository/tz-link.html> or the file tz-link.html for how to acquire the code and data. Once acquired, read the leading comments in the file ‘Makefile’ and make any changes needed to make things right for your system, especially when using a platform other than current GNU/Linux. Then run the following commands, substituting your desired installation directory for ‘$HOME/tzdir’: make TOPDIR="$HOME/tzdir" install "$HOME/tzdir/usr/bin/zdump" -v America/Los_Angeles See the file tz-how-to.html for examples of how to read the data files. This database of historical local time information has several goals: * Provide a compendium of data about the history of civil time that is useful even if not 100% accurate. * Give an idea of the variety of local time rules that have existed in the past and thus may be expected in the future. * Test the generality of the local time rule description system. The information in the time zone data files is by no means authoritative; fixes and enhancements are welcome. Please see the file CONTRIBUTING for details. Thanks to these Time Zone Caballeros who’ve made major contributions to the time conversion package: Keith Bostic; Bob Devine; Paul Eggert; Robert Elz; Guy Harris; Mark Horton; John Mackin; and Bradley White. Thanks also to Michael Bloom, Art Neilson, Stephen Prince, John Sovereign, and Frank Wales for testing work, and to Gwillim Law for checking local mean time data. Thanks in particular to Arthur David Olson, the project’s founder and first maintainer, to whom the time zone community owes the greatest debt of all. None of them are responsible for remaining errors. ----- This file is in the public domain, so clarified as of 2009-05-17 by Arthur David Olson. The other files in this distribution are either public domain or BSD licensed; see the file LICENSE for details. theory.html000064400000203172151706426130006756 0ustar00<!DOCTYPE html> <html lang="en"> <head> <title>Theory and pragmatics of the tz code and data</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> dd {margin-left: 1.3rem;} pre {margin-left: 1.3rem; overflow: auto;} ul {padding-left: 1.3rem;} </style> </head> <body> <h1>Theory and pragmatics of the <code><abbr>tz</abbr></code> code and data</h1> <nav> <ul> <li><a href="#scope">Scope of the <code><abbr>tz</abbr></code> database</a></li> <li><a href="#naming">Timezone identifiers</a></li> <li><a href="#abbreviations">Time zone abbreviations</a></li> <li><a href="#accuracy">Accuracy of the <code><abbr>tz</abbr></code> database</a></li> <li><a href="#functions">Time and date functions</a></li> <li><a href="#stability">Interface stability</a></li> <li><a href="#leapsec">Leap seconds</a></li> <li><a href="#calendar">Calendrical issues</a></li> <li><a href="#planets">Time and time zones off earth</a></li> </ul> </nav> <section> <h2 id="scope">Scope of the <code><abbr>tz</abbr></code> database</h2> <p> The <a href="https://www.iana.org/time-zones"><code><abbr>tz</abbr></code> database</a> attempts to record the history and predicted future of civil time scales. It organizes <a href="tz-link.html">time zone and daylight saving time data</a> by partitioning the world into <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"><dfn>timezones</dfn></a> whose clocks all agree about timestamps that occur after the <a href="https://en.wikipedia.org/wiki/Unix_time">POSIX Epoch</a> (1970-01-01 00:00:00 <a href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time"><abbr title="Coordinated Universal Time">UTC</abbr></a>). Although 1970 is a somewhat-arbitrary cutoff, there are significant challenges to moving the cutoff earlier even by a decade or two, due to the wide variety of local practices before computer timekeeping became prevalent. Most timezones correspond to a notable location and the database records all known clock transitions for that location; some timezones correspond instead to a fixed <abbr>UTC</abbr> offset. </p> <p> Each timezone typically corresponds to a geographical region that is smaller than a traditional time zone, because clocks in a timezone all agree after 1970 whereas a traditional time zone merely specifies current standard time. For example, applications that deal with current and future timestamps in the traditional North American mountain time zone can choose from the timezones <code>America/Denver</code> which observes US-style daylight saving time (<abbr>DST</abbr>), and <code>America/Phoenix</code> which does not observe <abbr>DST</abbr>. Applications that also deal with past timestamps in the mountain time zone can choose from over a dozen timezones, such as <code>America/Boise</code>, <code>America/Edmonton</code>, and <code>America/Hermosillo</code>, each of which currently uses mountain time but differs from other timezones for some timestamps after 1970. </p> <p> Clock transitions before 1970 are recorded for location-based timezones, because most systems support timestamps before 1970 and could misbehave if data entries were omitted for pre-1970 transitions. However, the database is not designed for and does not suffice for applications requiring accurate handling of all past times everywhere, as it would take far too much effort and guesswork to record all details of pre-1970 civil timekeeping. Although some information outside the scope of the database is collected in a file <code>backzone</code> that is distributed along with the database proper, this file is less reliable and does not necessarily follow database guidelines. </p> <p> As described below, reference source code for using the <code><abbr>tz</abbr></code> database is also available. The <code><abbr>tz</abbr></code> code is upwards compatible with <a href="https://en.wikipedia.org/wiki/POSIX">POSIX</a>, an international standard for <a href="https://en.wikipedia.org/wiki/Unix">UNIX</a>-like systems. As of this writing, the current edition of POSIX is <a href="https://pubs.opengroup.org/onlinepubs/9799919799/">POSIX.1-2024</a> (The Open Group Base Specifications Issue 8, IEEE Std 1003.1-2024). Unlike its predecessors <a href="https://archive.org/details/POSIX.1-1988">POSIX.1-1988</a> through <a href="https://pubs.opengroup.org/onlinepubs/9699919799/">POSIX.1-2017</a>, POSIX.1-2024 requires support for the <code><abbr>tz</abbr></code> database, which has a model for describing civil time that is more complex than the standard and daylight saving times required by earlier POSIX editions. A <code><abbr>tz</abbr></code> timezone corresponds to a ruleset that can have more than two changes per year, these changes need not merely flip back and forth between two alternatives, and the rules themselves can change at times. Whether and when a timezone changes its clock, and even the timezone’s notional base offset from <abbr>UTC</abbr>, are variable. It does not always make sense to talk about a timezone’s “base offset”, which is not necessarily a single number. </p> </section> <section> <h2 id="naming">Timezone identifiers</h2> <p> Each timezone has a name that uniquely identifies the timezone. Inexperienced users are not expected to select these names unaided. Distributors should provide documentation and/or a simple selection interface that explains each name via a map or via descriptive text like “Czech Republic” instead of the timezone name “<code>Europe/Prague</code>”. If geolocation information is available, a selection interface can locate the user on a timezone map or prioritize names that are geographically close. For an example selection interface, see the <code>tzselect</code> program in the <code><abbr>tz</abbr></code> code. Unicode’s <a href="https://cldr.unicode.org">Common Locale Data Repository (<abbr>CLDR</abbr>)</a> contains data that may be useful for other selection interfaces; it maps timezone names like <code>Europe/Prague</code> to locale-dependent strings like “Prague”, “Praha”, “Прага”, and “布拉格”. </p> <p> The naming conventions attempt to strike a balance among the following goals: </p> <ul> <li> Uniquely identify every timezone where clocks have agreed since 1970. This is essential for the intended use: static clocks keeping local civil time. </li> <li> Indicate to experts where the timezone’s clocks typically are. </li> <li> Be robust in the presence of political changes. For example, names are typically not tied to countries, to avoid incompatibilities when countries change their name (e.g., Swaziland→Eswatini) or when locations change countries (e.g., Hong Kong from UK colony to China). There is no requirement that every country or national capital must have a timezone name. </li> <li> Be portable to a wide variety of implementations. </li> <li> Use a consistent naming conventions over the entire world. </li> </ul> <p> Names normally have the format <var>AREA</var><code>/</code><var>LOCATION</var>, where <var>AREA</var> is a continent or ocean, and <var>LOCATION</var> is a specific location within the area. North and South America share the same area, <code>America</code>. Typical names are <code>Africa/Cairo</code>, <code>America/New_York</code>, and <code>Pacific/Honolulu</code>. Some names are further qualified to help avoid confusion; for example, <code>America/Indiana/Petersburg</code> distinguishes Petersburg, Indiana from other Petersburgs in America. </p> <p> Here are the general guidelines used for choosing timezone names, in decreasing order of importance: </p> <ul> <li> Use only valid POSIX file name components (i.e., the parts of names other than "<code>/</code>"). Do not use the file name components "<code>.</code>" and "<code>..</code>". Within a file name component, use only <a href="https://en.wikipedia.org/wiki/ASCII">ASCII</a> letters, "<code>.</code>", "<code>-</code>" and "<code>_</code>". Do not use digits, as that might create an ambiguity with <a href="https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap08.html#tag_08_03">POSIX’s proleptic <code>TZ</code> strings</a>. A file name component must not exceed 14 characters or start with "<code>-</code>". E.g., prefer <code>America/Noronha</code> to <code>America/Fernando_de_Noronha</code>. Exceptions: see the discussion of legacy names below. </li> <li> A name must not be empty, or contain "<code>//</code>", or start or end with "<code>/</code>". Also, a name must not be "<code>Etc/Unknown</code>", as <abbr>CLDR</abbr> uses that string for an unknown or invalid timezone. </li> <li> Do not use names that differ only in case. Although the reference implementation is case-sensitive, some other implementations are not, and they would mishandle names differing only in case. </li> <li> If one name <var>A</var> is an initial prefix of another name <var>AB</var> (ignoring case), then <var>B</var> must not start with "<code>/</code>", as a regular file cannot have the same name as a directory in POSIX. For example, <code>America/New_York</code> precludes <code>America/New_York/Bronx</code>. </li> <li> Uninhabited regions like the North Pole and Bouvet Island do not need locations, since local time is not defined there. </li> <li> If all clocks in a region have agreed since 1970, give them just one name even if some of the clocks disagreed before 1970, or reside in different countries or in notable or faraway locations. Otherwise these tables would become annoyingly large. For example, do not create a name <code>Indian/Crozet</code> as a near-duplicate or alias of <code>Asia/Dubai</code> merely because they are different countries or territories, or their clocks disagreed before 1970, or the <a href="https://en.wikipedia.org/wiki/Crozet_Islands">Crozet Islands</a> are notable in their own right, or the Crozet Islands are not adjacent to other locations that use <code>Asia/Dubai</code>. </li> <li> If boundaries between regions are fluid, such as during a war or insurrection, do not bother to create a new timezone merely because of yet another boundary change. This helps prevent table bloat and simplifies maintenance. </li> <li> If a name is ambiguous, use a less ambiguous alternative; e.g., many cities are named San José and Georgetown, so prefer <code>America/Costa_Rica</code> to <code>America/San_Jose</code> and <code>America/Guyana</code> to <code>America/Georgetown</code>. </li> <li> Keep locations compact. Use cities or small islands, not countries or regions, so that any future changes do not split individual locations into different timezones. E.g., prefer <code>Europe/Paris</code> to <code>Europe/France</code>, since <a href="https://en.wikipedia.org/wiki/Time_in_France#History">France has had multiple time zones</a>. </li> <li> Use mainstream English spelling, e.g., prefer <code>Europe/Rome</code> to <code>Europa/Roma</code>, and prefer <code>Europe/Athens</code> to the Greek <code>Ευρώπη/Αθήνα</code> or the Romanized <code>Evrópi/Athína</code>. The POSIX file name restrictions encourage this guideline. </li> <li> Use the most populous among locations in a region, e.g., prefer <code>Asia/Shanghai</code> to <code>Asia/Beijing</code>. Among locations with similar populations, pick the best-known location, e.g., prefer <code>Europe/Rome</code> to <code>Europe/Milan</code>. </li> <li> Use the singular form, e.g., prefer <code>Atlantic/Canary</code> to <code>Atlantic/Canaries</code>. </li> <li> Omit common suffixes like "<code>_Islands</code>" and "<code>_City</code>", unless that would lead to ambiguity. E.g., prefer <code>America/Cayman</code> to <code>America/Cayman_Islands</code> and <code>America/Guatemala</code> to <code>America/Guatemala_City</code>, but prefer <code>America/Mexico_City</code> to <code>America/Mexico</code> because <a href="https://en.wikipedia.org/wiki/Time_in_Mexico">the country of Mexico has several time zones</a>. </li> <li> Use "<code>_</code>" to represent a space. </li> <li> Omit "<code>.</code>" from abbreviations in names. E.g., prefer <code>Atlantic/St_Helena</code> to <code>Atlantic/St._Helena</code>. </li> <li> Do not change established names if they only marginally violate the above guidelines. For example, do not change the existing name <code>Europe/Rome</code> to <code>Europe/Milan</code> merely because Milan’s population has grown to be somewhat greater than Rome’s. </li> <li> If a name is changed, put its old spelling in the "<code>backward</code>" file as a link to the new spelling. This means old spellings will continue to work. Ordinarily a name change should occur only in the rare case when a location’s consensus English-language spelling changes; for example, in 2008 <code>Asia/Calcutta</code> was renamed to <code>Asia/Kolkata</code> due to long-time widespread use of the new city name instead of the old. </li> </ul> <p> Guidelines have evolved with time, and names following old versions of these guidelines might not follow the current version. When guidelines have changed, old names continue to be supported. Guideline changes have included the following: </p> <ul> <li> Older versions of this package used a different naming scheme. See the file "<code>backward</code>" for most of these older names (e.g., <code>US/Eastern</code> instead of <code>America/New_York</code>). The other old-fashioned names still supported are <code>WET</code>, <code>CET</code>, <code>MET</code>, and <code>EET</code> (see the file "<code>europe</code>"). </li> <li> Older versions of this package defined legacy names that are incompatible with the first guideline of location names, but which are still supported. These legacy names are mostly defined in the file "<code>etcetera</code>". Also, the file "<code>backward</code>" defines the legacy names <code>Etc/GMT0</code>, <code>Etc/GMT-0</code>, <code>Etc/GMT+0</code>, <code>GMT0</code>, <code>GMT-0</code> and <code>GMT+0</code>, and the file "<code>northamerica</code>" defines the legacy names <code>EST5EDT</code>, <code>CST6CDT</code>, <code>MST7MDT</code>, and <code>PST8PDT</code>. </li> <li> Older versions of these guidelines said that there should typically be at least one name for each <a href="https://en.wikipedia.org/wiki/ISO_3166-1"><abbr title="International Organization for Standardization">ISO</abbr> 3166-1</a> officially assigned two-letter code for an inhabited country or territory. This old guideline has been dropped, as it was not needed to handle timestamps correctly and it increased maintenance burden. </li> </ul> <p> The file <code>zone1970.tab</code> lists geographical locations used to name timezones. It is intended to be an exhaustive list of names for geographic regions as described above; this is a subset of the timezones in the data. Although a <code>zone1970.tab</code> location’s <a href="https://en.wikipedia.org/wiki/Longitude">longitude</a> corresponds to its <a href="https://en.wikipedia.org/wiki/Local_mean_time">local mean time (<abbr>LMT</abbr>)</a> offset with one hour for every 15° east longitude, this relationship is not exact. The backward-compatibility file <code>zone.tab</code> is similar but conforms to the older-version guidelines related to <abbr>ISO</abbr> 3166-1; it lists only one country code per entry and unlike <code>zone1970.tab</code> it can list names defined in <code>backward</code>. Applications that process only timestamps from now on can instead use the file <code>zonenow.tab</code>, which partitions the world more coarsely, into regions where clocks agree now and in the predicted future; this file is smaller and simpler than <code>zone1970.tab</code> and <code>zone.tab</code>. </p> <p> The database defines each timezone name to be a zone, or a link to a zone. The source file <code>backward</code> defines links for backward compatibility; it does not define zones. Although <code>backward</code> was originally designed to be optional, nowadays distributions typically use it and no great weight should be attached to whether a link is defined in <code>backward</code> or in some other file. The source file <code>etcetera</code> defines names that may be useful on platforms that do not support proleptic <code>TZ</code> strings like <code><+08>-8</code>; no other source file other than <code>backward</code> contains links to its zones. One of <code>etcetera</code>’s names is <code>Etc/UTC</code>, used by functions like <code>gmtime</code> to obtain leap second information on platforms that support leap seconds. Another <code>etcetera</code> name, <code>GMT</code>, is used by older code releases. </p> </section> <section> <h2 id="abbreviations">Time zone abbreviations</h2> <p> When this package is installed, it generates time zone abbreviations like <code>EST</code> to be compatible with human tradition and POSIX. Here are the general guidelines used for choosing time zone abbreviations, in decreasing order of importance: </p> <ul> <li> Use three to six characters that are ASCII alphanumerics or "<code>+</code>" or "<code>-</code>". Previous editions of this database also used characters like space and "<code>?</code>", but these characters have a special meaning to the <a href="https://en.wikipedia.org/wiki/Unix_shell">UNIX shell</a> and cause commands like "<code><a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#set">set</a> `<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/date.html">date</a>`</code>" to have unexpected effects. Previous editions of this guideline required upper-case letters, but the Congressman who introduced <a href="https://en.wikipedia.org/wiki/Chamorro_Time_Zone">Chamorro Standard Time</a> preferred “ChST”, so lower-case letters are now allowed. Also, POSIX from 2001 on relaxed the rule to allow "<code>-</code>", "<code>+</code>", and alphanumeric characters from the portable character set in the current locale. In practice ASCII alphanumerics and "<code>+</code>" and "<code>-</code>" are safe in all locales. <p> In other words, in the C locale the POSIX extended regular expression <code>[-+[:alnum:]]{3,6}</code> should match the abbreviation. This guarantees that all abbreviations could have been specified explicitly by a POSIX proleptic <code>TZ</code> string. </p> </li> <li> Use abbreviations that are in common use among English-speakers, e.g., “EST” for Eastern Standard Time in North America. We assume that applications translate them to other languages as part of the normal localization process; for example, a French application might translate “EST” to “HNE”. <p> <small>These abbreviations (for standard/daylight/etc. time) are: ACST/ACDT Australian Central, AST/ADT/APT/AWT/ADDT Atlantic, AEST/AEDT Australian Eastern, AHST/AHDT Alaska-Hawaii, AKST/AKDT Alaska, AWST/AWDT Australian Western, BST/BDT Bering, CAT/CAST Central Africa, CET/CEST/CEMT Central European, ChST Chamorro, CST/CDT/CWT/CPT Central [North America], CST/CDT China, GMT/BST/IST/BDST Greenwich, EAT East Africa, EST/EDT/EWT/EPT Eastern [North America], EET/EEST Eastern European, GST/GDT Guam, HST/HDT/HWT/HPT Hawaii, HKT/HKST/HKWT Hong Kong, IST India, IST/GMT Irish, IST/IDT/IDDT Israel, JST/JDT Japan, KST/KDT Korea, MET/MEST Middle European (a backward-compatibility alias for Central European), MSK/MSD Moscow, MST/MDT/MWT/MPT Mountain, NST/NDT/NWT/NPT/NDDT Newfoundland, NST/NDT/NWT/NPT Nome, NZMT/NZST New Zealand through 1945, NZST/NZDT New Zealand 1946–present, PKT/PKST Pakistan, PST/PDT/PWT/PPT Pacific, PST/PDT Philippine, SAST South Africa, SST Samoa, UTC Universal, WAT/WAST West Africa, WET/WEST/WEMT Western European, WIB Waktu Indonesia Barat, WIT Waktu Indonesia Timur, WITA Waktu Indonesia Tengah, YST/YDT/YWT/YPT/YDDT Yukon</small>. </p> </li> <li> <p> For times taken from a city’s longitude, use the traditional <var>x</var>MT notation. The only abbreviation like this in current use is <abbr>GMT</abbr>. The others are for timestamps before 1960, except that Monrovia Mean Time persisted until 1972. Typically, numeric abbreviations (e.g., <code>-</code>004430 for MMT) would cause trouble here, as the numeric strings would exceed the POSIX length limit. </p> <p> <small>These abbreviations are: AMT Asunción, Athens; BMT Baghdad, Bangkok, Batavia, Bermuda, Bern, Bogotá, Brussels, Bucharest; CMT Calamarca, Caracas, Chisinau, Colón, Córdoba; DMT Dublin/Dunsink; EMT Easter; FFMT Fort-de-France; FMT Funchal; GMT Greenwich; HMT Havana, Helsinki, Horta, Howrah; IMT Irkutsk, Istanbul; JMT Jerusalem; KMT Kaunas, Kyiv, Kingston; LMT Lima, Lisbon, local; MMT Macassar, Madras, Malé, Managua, Minsk, Monrovia, Montevideo, Moratuwa, Moscow; PLMT Phù Liễn; PMT Paramaribo, Paris, Perm, Pontianak, Prague; PMMT Port Moresby; PPMT Port-au-Prince; QMT Quito; RMT Rangoon, Riga, Rome; SDMT Santo Domingo; SJMT San José; SMT Santiago, Simferopol, Singapore, Stanley; TBMT Tbilisi; TMT Tallinn, Tehran; WMT Warsaw.</small> </p> <p> <small>A few abbreviations also follow the pattern that <abbr>GMT</abbr>/<abbr>BST</abbr> established for time in the UK. They are: BMT/BST for Bermuda 1890–1930, CMT/BST for Calamarca Mean Time and Bolivian Summer Time 1890–1932, DMT/IST for Dublin/Dunsink Mean Time and Irish Summer Time 1880–1916, MMT/MST/MDST for Moscow 1880–1919, and RMT/LST for Riga Mean Time and Latvian Summer time 1880–1926. </small> </p> </li> <li> Use “<abbr>LMT</abbr>” for local mean time of locations before the introduction of standard time; see “<a href="#scope">Scope of the <code><abbr>tz</abbr></code> database</a>”. </li> <li> If there is no common English abbreviation, use numeric offsets like <code>-</code>05 and <code>+</code>0530 that are generated by <code>zic</code>’s <code>%z</code> notation. </li> <li> Use current abbreviations for older timestamps to avoid confusion. For example, in 1910 a common English abbreviation for time in central Europe was “MEZ” (short for both “Middle European Zone” and for “Mitteleuropäische Zeit” in German). Nowadays “CET” (“Central European Time”) is more common in English, and the database uses “CET” even for circa-1910 timestamps as this is less confusing for modern users and avoids the need for determining when “CET” supplanted “MEZ” in common usage. </li> <li> Use a consistent style in a timezone’s history. For example, if a history tends to use numeric abbreviations and a particular entry could go either way, use a numeric abbreviation. </li> <li> Use <a href="https://en.wikipedia.org/wiki/Universal_Time">Universal Time</a> (<abbr>UT</abbr>) (with time zone abbreviation <code>-</code>00) for locations while uninhabited. The leading "<code>-</code>" is a flag that the <abbr>UT</abbr> offset is in some sense undefined; this notation is derived from <a href="https://www.rfc-editor.org/rfc/rfc3339">Internet <abbr title="Request For Comments">RFC</abbr> 3339</a>. (The abbreviation Z that <a href="https://www.rfc-editor.org/rfc/rfc9557">Internet <abbr>RFC</abbr> 9557</a> uses for this concept would violate the POSIX requirement of at least three characters in an abbreviation.) </li> </ul> <p> Application writers should note that these abbreviations are ambiguous in practice: e.g., CST means one thing in China and something else in North America, and IST can refer to time in India, Ireland or Israel. To avoid ambiguity, use numeric <abbr>UT</abbr> offsets like <code>-</code>0600 instead of time zone abbreviations like CST. </p> </section> <section> <h2 id="accuracy">Accuracy of the <code><abbr>tz</abbr></code> database</h2> <p> The <code><abbr>tz</abbr></code> database is not authoritative, and it surely has errors. Corrections are welcome and encouraged; see the file <code>CONTRIBUTING</code>. Users requiring authoritative data should consult national standards bodies and the references cited in the database’s comments. </p> <p> Errors in the <code><abbr>tz</abbr></code> database arise from many sources: </p> <ul> <li> The <code><abbr>tz</abbr></code> database predicts future timestamps, and current predictions will be incorrect after future governments change the rules. For example, if today someone schedules a meeting for 13:00 next October 1, Casablanca time, and tomorrow Morocco changes its daylight saving rules, software can mess up after the rule change if it blithely relies on conversions made before the change. </li> <li> The pre-1970 entries in this database cover only a tiny sliver of how clocks actually behaved; the vast majority of the necessary information was lost or never recorded. Thousands more timezones would be needed if the <code><abbr>tz</abbr></code> database’s scope were extended to cover even just the known or guessed history of standard time; for example, the current single entry for France would need to split into dozens of entries, perhaps hundreds. And in most of the world even this approach would be misleading due to widespread disagreement or indifference about what times should be observed. In her 2015 book <cite><a href="https://www.hup.harvard.edu/books/9780674286146">The Global Transformation of Time, 1870–1950</a></cite>, Vanessa Ogle writes “Outside of Europe and North America there was no system of time zones at all, often not even a stable landscape of mean times, prior to the middle decades of the twentieth century”. See: Timothy Shenk, <a href="https://dissentmagazine.org/blog/booked-a-global-history-of-time-vanessa-ogle/">Booked: A Global History of Time</a>. <cite>Dissent</cite> 2015-12-17. </li> <li> Most of the pre-1970 data entries come from unreliable sources, often astrology books that lack citations and whose compilers evidently invented entries when the true facts were unknown, without reporting which entries were known and which were invented. These books often contradict each other or give implausible entries, and on the rare occasions when they are checked they are typically found to be incorrect. </li> <li> For the UK the <code><abbr>tz</abbr></code> database relies on years of first-class work done by Joseph Myers and others; see “<a href="https://www.polyomino.org.uk/british-time/">History of legal time in Britain</a>”. Other countries are not done nearly as well. </li> <li> Sometimes, different people in the same city maintain clocks that differ significantly. Historically, railway time was used by railroad companies (which did not always agree with each other), church-clock time was used for birth certificates, etc. More recently, competing political groups might disagree about clock settings. Often this is merely common practice, but sometimes it is set by law. For example, from 1891 to 1911 the <abbr>UT</abbr> offset in France was legally <abbr>UT</abbr> +00:09:21 outside train stations and <abbr>UT</abbr> +00:04:21 inside. Other examples include Chillicothe in 1920, Palm Springs in 1946/7, and Jerusalem and Ürümqi to this day. </li> <li> Although a named location in the <code><abbr>tz</abbr></code> database stands for the containing region, its pre-1970 data entries are often accurate for only a small subset of that region. For example, <code>Europe/London</code> stands for the United Kingdom, but its pre-1847 times are valid only for locations that have London’s exact meridian, and its 1847 transition to <abbr>GMT</abbr> is known to be valid only for the L&NW and the Caledonian railways. </li> <li> The <code><abbr>tz</abbr></code> database does not record the earliest time for which a timezone’s data entries are thereafter valid for every location in the region. For example, <code>Europe/London</code> is valid for all locations in its region after <abbr>GMT</abbr> was made the standard time, but the date of standardization (1880-08-02) is not in the <code><abbr>tz</abbr></code> database, other than in commentary. For many timezones the earliest time of validity is unknown. </li> <li> The <code><abbr>tz</abbr></code> database does not record a region’s boundaries, and in many cases the boundaries are not known. For example, the timezone <code>America/Kentucky/Louisville</code> represents a region around the city of Louisville, the boundaries of which are unclear. </li> <li> Changes that are modeled as instantaneous transitions in the <code><abbr>tz</abbr></code> database were often spread out over hours, days, or even decades. </li> <li> Even if the time is specified by law, locations sometimes deliberately flout the law. </li> <li> Early timekeeping practices, even assuming perfect clocks, were often not specified to the accuracy that the <code><abbr>tz</abbr></code> database requires. </li> <li> The <code><abbr>tz</abbr></code> database cannot represent stopped clocks. However, on 1911-03-11 at 00:00, some public-facing French clocks were changed by stopping them for a few minutes to effect a transition. The <code><abbr>tz</abbr></code> database models this via a backward transition; the relevant French legislation does not specify exactly how the transition was to occur. </li> <li> Sometimes historical timekeeping was specified more precisely than what the <code><abbr>tz</abbr></code> code can handle. For example, from 1880 to 1916 clocks in Ireland observed Dublin Mean Time (estimated to be <abbr>UT</abbr> −00:25:21.1); although the <code><abbr>tz</abbr></code> source data can represent the .1 second, TZif files and the code cannot. In practice these old specifications were rarely if ever implemented to subsecond precision. </li> <li> Even when all the timestamp transitions recorded by the <code><abbr>tz</abbr></code> database are correct, the <code><abbr>tz</abbr></code> rules that generate them may not faithfully reflect the historical rules. For example, from 1922 until World War II the UK moved clocks forward the day following the third Saturday in April unless that was Easter, in which case it moved clocks forward the previous Sunday. Because the <code><abbr>tz</abbr></code> database has no way to specify Easter, these exceptional years are entered as separate <code><abbr>tz</abbr> Rule</code> lines, even though the legal rules did not change. When transitions are known but the historical rules behind them are not, the database contains <code>Zone</code> and <code>Rule</code> entries that are intended to represent only the generated transitions, not any underlying historical rules; however, this intent is recorded at best only in commentary. </li> <li> The <code><abbr>tz</abbr></code> database models time using the <a href="https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar">proleptic Gregorian calendar</a> with days containing 24 equal-length hours numbered 00 through 23, except when clock transitions occur. Pre-standard time is modeled as local mean time. However, historically many people used other calendars and other timescales. For example, the Roman Empire used the <a href="https://en.wikipedia.org/wiki/Julian_calendar">Julian calendar</a>, and <a href="https://en.wikipedia.org/wiki/Roman_timekeeping">Roman timekeeping</a> had twelve varying-length daytime hours with a non-hour-based system at night. And even today, some local practices diverge from the Gregorian calendar with 24-hour days. These divergences range from relatively minor, such as Japanese bars giving times like 24:30 for the wee hours of the morning, to more-significant differences such as <a href="https://theworld.org/stories/2015/01/30/ethiopian-time">the east African practice of starting the day at dawn</a>, renumbering the Western 06:00 to be 12:00. These practices are largely outside the scope of the <code><abbr>tz</abbr></code> code and data, which provide only limited support for date and time localization such as that required by POSIX. If <abbr>DST</abbr> is not used a different time zone can often do the trick; for example, in Kenya a <code>TZ</code> setting like <code><-03>3</code> or <code>America/Cayenne</code> starts the day six hours later than <code>Africa/Nairobi</code> does. </li> <li> Early clocks were less reliable, and data entries do not represent clock error. </li> <li> The <code><abbr>tz</abbr></code> database assumes Universal Time (<abbr>UT</abbr>) as an origin, even though <abbr>UT</abbr> is not standardized for older timestamps. In the <code><abbr>tz</abbr></code> database commentary, <abbr>UT</abbr> denotes a family of time standards that includes Coordinated Universal Time (<abbr>UTC</abbr>) along with other variants such as <abbr>UT1</abbr> and <abbr>GMT</abbr>, with days starting at midnight. Although <abbr>UT</abbr> equals <abbr>UTC</abbr> for modern timestamps, <abbr>UTC</abbr> was not defined until 1960, so commentary uses the more general abbreviation <abbr>UT</abbr> for timestamps that might predate 1960. Since <abbr>UT</abbr>, <abbr>UT1</abbr>, etc. disagree slightly, and since pre-1972 <abbr>UTC</abbr> seconds varied in length, interpretation of older timestamps can be problematic when subsecond accuracy is needed. </li> <li> Civil time was not based on atomic time before 1972, and we do not know the history of <a href="https://en.wikipedia.org/wiki/Earth's_rotation">earth’s rotation</a> accurately enough to map <a href="https://en.wikipedia.org/wiki/International_System_of_Units"><abbr title="International System of Units">SI</abbr></a> seconds to historical <a href="https://en.wikipedia.org/wiki/Solar_time">solar time</a> to more than about one-hour accuracy. See: Morrison LV, Stephenson FR, Hohenkerk CY, Zawilski M. <a href="https://doi.org/10.1098/rspa.2020.0776">Addendum 2020 to ‘Measurement of the Earth’s rotation: 720 BC to AD 2015’</a>. <cite>Proc Royal Soc A</cite>. 2021;477:20200776. Also see: Espenak F. <a href="https://eclipse.gsfc.nasa.gov/SEhelp/uncertainty2004.html">Uncertainty in Delta T (ΔT)</a>. </li> <li> The relationship between POSIX time (that is, <abbr>UTC</abbr> but ignoring <a href="https://en.wikipedia.org/wiki/Leap_second">leap seconds</a>) and <abbr>UTC</abbr> is not agreed upon. This affects time stamps during the leap second era (1972–2035). Although the POSIX clock officially stops during an inserted leap second, at least one proposed standard has it jumping back a second instead; and in practice POSIX clocks more typically either progress glacially during a leap second, or are slightly slowed while near a leap second. </li> <li> The <code><abbr>tz</abbr></code> database does not represent how uncertain its information is. Ideally it would contain information about when data entries are incomplete or dicey. Partial temporal knowledge is a field of active research, though, and it is not clear how to apply it here. </li> </ul> <p> In short, many, perhaps most, of the <code><abbr>tz</abbr></code> database’s pre-1970 and future timestamps are either wrong or misleading. Any attempt to pass the <code><abbr>tz</abbr></code> database off as the definition of time should be unacceptable to anybody who cares about the facts. In particular, the <code><abbr>tz</abbr></code> database’s <abbr>LMT</abbr> offsets should not be considered meaningful, and should not prompt creation of timezones merely because two locations differ in <abbr>LMT</abbr> or transitioned to standard time at different dates. </p> </section> <section> <h2 id="functions">Time and date functions</h2> <p> The <code><abbr>tz</abbr></code> code contains time and date functions that are upwards compatible with those of POSIX. Code compatible with this package is already <a href="tz-link.html#tzdb">part of many platforms</a>, where the primary use of this package is to update obsolete time-related files. To do this, you may need to compile the time zone compiler <code>zic</code> supplied with this package instead of using the system <code>zic</code>, since the format of <code>zic</code>’s input is occasionally extended, and a platform may still be shipping an older <code>zic</code>. </p> <p> In POSIX, time display in a process is controlled by the environment variable <code>TZ</code>, which can have two forms: </p> <ul> <li> A <dfn>proleptic <code>TZ</code></dfn> value like <code>CET-1CEST,M3.5.0,M10.5.0/3</code> uses a complex notation that specifies a single standard time along with daylight saving rules that apply to all years past, present, and future. </li> <li> A <dfn>geographical <code>TZ</code></dfn> value like <code>Europe/Berlin</code> names a location that stands for civil time near that location, which can have more than one standard time and more than one set of daylight saving rules, to record timekeeping practice more accurately. These names are defined by the <code><abbr>tz</abbr></code> database. </li> </ul> <h3 id="POSIX.1-2017">POSIX.1-2017 properties and limitations</h3> <p> Some platforms support only the features required by POSIX.1-2017 and earlier editions, and have not yet upgraded to POSIX.1-2024. Code intended to be portable to these platforms must deal with problems that were fixed in later POSIX editions. </p> <ul> <li> POSIX.1-2017 does not require support for geographical <code>TZ</code>, and there is no convenient and efficient way to determine the <abbr>UT</abbr> offset and time zone abbreviation of arbitrary timestamps, particularly for timezones that do not fit into the POSIX model. </li> <li> <p> The proleptic <code>TZ</code> string, which is all that POSIX.1-2017 requires, has a format that is hard to describe and is error-prone in practice. Also, proleptic <code>TZ</code> strings cannot deal with daylight saving time rules not based on the Gregorian calendar (as in Morocco), or with situations where more than two time zone abbreviations or <abbr>UT</abbr> offsets are used in an area. </p> <p> A proleptic <code>TZ</code> string has the following format: </p> <p> <var>stdoffset</var>[<var>dst</var>[<var>offset</var>][<code>,</code><var>date</var>[<code>/</code><var>time</var>]<code>,</code><var>date</var>[<code>/</code><var>time</var>]]] </p> <p> where: </p> <dl> <dt><var>std</var> and <var>dst</var></dt><dd> are 3 or more characters specifying the standard and daylight saving time (<abbr>DST</abbr>) zone abbreviations. Starting with POSIX.1-2001, <var>std</var> and <var>dst</var> may also be quoted in angle brackets, like <code><+09></code>; this allows "<code>+</code>" and "<code>-</code>" in the names. </dd> <dt><var>offset</var></dt><dd> is of the form <code>[±]<var>hh</var>:[<var>mm</var>[:<var>ss</var>]]</code> and specifies the offset west of <abbr>UT</abbr>. <var>hh</var> may be a single digit; 0≤<var>hh</var>≤24. The default <abbr>DST</abbr> offset is one hour ahead of standard time. </dd> <dt><var>date</var>[<code>/</code><var>time</var>]<code>,</code><var>date</var>[<code>/</code><var>time</var>]</dt><dd> specifies the beginning and end of <abbr>DST</abbr>. If this is absent, the system supplies its own ruleset for <abbr>DST</abbr>, typically current <abbr>US</abbr> <abbr>DST</abbr> rules. </dd> <dt><var>time</var></dt><dd> takes the form <var>hh</var><code>:</code>[<var>mm</var>[<code>:</code><var>ss</var>]] and defaults to 02:00. This is the same format as the offset, except that a leading "<code>+</code>" or "<code>-</code>" is not allowed. </dd> <dt><var>date</var></dt><dd> takes one of the following forms: <dl> <dt>J<var>n</var> (1≤<var>n</var>≤365)</dt><dd> origin-1 day number not counting February 29 </dd> <dt><var>n</var> (0≤<var>n</var>≤365)</dt><dd> origin-0 day number counting February 29 if present </dd> <dt><code>M</code><var>m</var><code>.</code><var>n</var><code>.</code><var>d</var> (0[Sunday]≤<var>d</var>≤6[Saturday], 1≤<var>n</var>≤5, 1≤<var>m</var>≤12)</dt><dd> for the <var>d</var>th day of week <var>n</var> of month <var>m</var> of the year, where week 1 is the first week in which day <var>d</var> appears, and "<code>5</code>" stands for the last week in which day <var>d</var> appears (which may be either the 4th or 5th week). Typically, this is the only useful form; the <var>n</var> and <code>J</code><var>n</var> forms are rarely used. </dd> </dl> </dd> </dl> <p> Here is an example proleptic <code>TZ</code> string for New Zealand after 2007. It says that standard time (<abbr>NZST</abbr>) is 12 hours ahead of <abbr>UT</abbr>, and that daylight saving time (<abbr>NZDT</abbr>) is observed from September’s last Sunday at 02:00 until April’s first Sunday at 03:00: </p> <pre><code>TZ='NZST-12NZDT,M9.5.0,M4.1.0/3'</code></pre> <p> This proleptic <code>TZ</code> string is hard to remember, and mishandles some timestamps before 2008. With this package you can use a geographical <code>TZ</code> instead: </p> <pre><code>TZ='Pacific/Auckland'</code></pre> </li> </ul> <p> POSIX.1-2017 also has the limitations of POSIX.1-2024, discussed in the next section. </p> <h3 id="POSIX.1-2024">POSIX.1-2024 properties and limitations</h3> <p> POSIX.1-2024 extends POSIX.1-2017 in the following significant ways: </p> <ul> <li> POSIX.1-2024 requires support for geographical <code>TZ</code>. Earlier POSIX editions require support only for proleptic <code>TZ</code>. </li> <li> POSIX.1-2024 requires <code>struct tm</code> to have a <abbr>UT</abbr> offset member <code>tm_gmtoff</code> and a time zone abbreviation member <code>tm_zone</code>. Earlier POSIX editions lack this requirement. </li> <li> DST transition times can range from −167:59:59 to 167:59:59 instead of merely from 00:00:00 to 24:59:59. This allows for proleptic TZ strings like <code>"<-02>2<-01>,M3.5.0/-1,M10.5.0/0"</code> where the transition time −1:00 means 23:00 the previous day. </li> </ul> <p> However POSIX.1-2024, like earlier POSIX editions, has some limitations: <ul> <li> The <code>TZ</code> environment variable is process-global, which makes it hard to write efficient, thread-safe applications that need access to multiple timezones. </li> <li> In POSIX, there is no tamper-proof way for a process to learn the system’s best idea of local (wall clock) time. This is important for applications that an administrator wants used only at certain times – without regard to whether the user has fiddled the <code>TZ</code> environment variable. While an administrator can “do everything in <abbr>UT</abbr>” to get around the problem, doing so is inconvenient and precludes handling daylight saving time shifts – as might be required to limit phone calls to off-peak hours. </li> <li> POSIX requires that <code>time_t</code> clock counts exclude leap seconds. </li> <li> POSIX does not define the <abbr>DST</abbr> transitions for settings like <code>TZ='EST5EDT'</code>. Traditionally the current <abbr>US</abbr> <abbr>DST</abbr> rules were used to interpret such values, but this meant that the <abbr>US</abbr> <abbr>DST</abbr> rules were compiled into each time conversion package, and when <abbr>US</abbr> time conversion rules changed (as in the United States in 1987 and again in 2007), all packages that interpreted <code>TZ</code> values had to be updated to ensure proper results. </li> </ul> <h3 id="POSIX-extensions">Extensions to POSIX in the <code><abbr>tz</abbr></code> code</h3> <p> The <code><abbr>tz</abbr></code> code defines some properties left unspecified by POSIX, and attempts to support some extensions to POSIX. </p> <ul> <li> The <code><abbr>tz</abbr></code> code attempts to support all the <code>time_t</code> implementations allowed by POSIX. The <code>time_t</code> type represents a nonnegative count of seconds since 1970-01-01 00:00:00 <abbr>UTC</abbr>, ignoring leap seconds. In practice, <code>time_t</code> is usually a signed 64- or 32-bit integer; 32-bit signed <code>time_t</code> values stop working after 2038-01-19 03:14:07 <abbr>UTC</abbr>, so new implementations these days typically use a signed 64-bit integer. Unsigned 32-bit integers are used on one or two platforms, and 36-bit and 40-bit integers are also used occasionally. Although earlier POSIX versions allowed <code>time_t</code> to be a floating-point type, this was not supported by any practical system, and POSIX.1-2013+ and the <code><abbr>tz</abbr></code> code both require <code>time_t</code> to be an integer type. </li> <li> <p> If the <code>TZ</code> environment variable uses the geographical format, it is used in generating the name of a file from which time-related information is read. The file’s format is <dfn><abbr>TZif</abbr></dfn>, a timezone information format that contains binary data; see <a href="https://www.rfc-editor.org/rfc/rfc9636">Internet <abbr>RFC</abbr> 9636</a>. The daylight saving time rules to be used for a particular timezone are encoded in the <abbr>TZif</abbr> file; the format of the file allows <abbr>US</abbr>, Australian, and other rules to be encoded, and allows for situations where more than two time zone abbreviations are used. </p> <p> When the <code><abbr>tz</abbr></code> code was developed in the 1980s, it was recognized that allowing the <code>TZ</code> environment variable to take on values such as <code>America/New_York</code> might cause old programs (that expect <code>TZ</code> to have a certain format) to operate incorrectly; consideration was given to using some other environment variable (for example, <code>TIMEZONE</code>) to hold the string used to generate the <abbr>TZif</abbr> file’s name. In the end, however, it was decided to continue using <code>TZ</code>: it is widely used for time zone purposes; separately maintaining both <code>TZ</code> and <code>TIMEZONE</code> seemed a nuisance; and systems where new forms of <code>TZ</code> might cause problems can simply use legacy settings such as <code>TZ='EST5EDT'</code> which can be used by new programs as well as by old programs that assume pre-POSIX <code>TZ</code> values. </p> </li> <li> Functions <code>tzalloc</code>, <code>tzfree</code>, <code>localtime_rz</code>, and <code>mktime_z</code> for more-efficient thread-safe applications that need to use multiple timezones. The <code>tzalloc</code> and <code>tzfree</code> functions allocate and free objects of type <code>timezone_t</code>, and <code>localtime_rz</code> and <code>mktime_z</code> are like <code>localtime_r</code> and <code>mktime</code> with an extra <code>timezone_t</code> argument. The functions were inspired by <a href="https://netbsd.org">NetBSD</a>. </li> <li> Negative <code>time_t</code> values are supported, on systems where <code>time_t</code> is signed. </li> <li> These functions can account for leap seconds; see <a href="#leapsec">Leap seconds</a> below. </li> </ul> <h3 id="vestigial">POSIX features no longer needed</h3> <p> POSIX and <a href="https://en.wikipedia.org/wiki/ISO_C"><abbr>ISO</abbr> C</a> define some <a href="https://en.wikipedia.org/wiki/API"><abbr title="application programming interface">API</abbr>s</a> that are vestigial: they are not needed, and are relics of a too-simple model that does not suffice to handle many real-world timestamps. Although the <code><abbr>tz</abbr></code> code supports these vestigial <abbr>API</abbr>s for backwards compatibility, they should be avoided in portable applications. The vestigial <abbr>API</abbr>s are: </p> <ul> <li> The POSIX <code>tzname</code> variable does not suffice and is no longer needed. It is planned to be removed in a future edition of POSIX. To get a timestamp’s time zone abbreviation, consult the <code>tm_zone</code> member if available; otherwise, use <code>strftime</code>’s <code>"%Z"</code> conversion specification. </li> <li> The POSIX <code>daylight</code> and <code>timezone</code> variables do not suffice and are no longer needed. They are planned to be removed in a future edition of POSIX. To get a timestamp’s <abbr>UT</abbr> offset, consult the <code>tm_gmtoff</code> member if available; otherwise, subtract values returned by <code>localtime</code> and <code>gmtime</code> using the rules of the Gregorian calendar, or use <code>strftime</code>’s <code>"%z"</code> conversion specification if a string like <code>"+0900"</code> suffices. </li> <li> The <code>tm_isdst</code> member is almost never needed and most of its uses should be discouraged in favor of the abovementioned <abbr>API</abbr>s. It was intended as an index into the <code>tzname</code> variable, but as mentioned previously that usage is obsolete. Although it can still be used in arguments to <code>mktime</code> to disambiguate timestamps near a <abbr>DST</abbr> transition when the clock jumps back on platforms lacking <code>tm_gmtoff</code>, this disambiguation works only for proleptic <code>TZ</code> strings; it does not work in general for geographical timezones, such as when a location changes to a time zone with a lesser <abbr>UT</abbr> offset. </li> </ul> <h3 id="other-portability">Other portability notes</h3> <ul> <li> The <a href="https://en.wikipedia.org/wiki/Version_7_Unix">7th Edition UNIX</a> <code>timezone</code> function is not present in this package; it is impossible to reliably map <code>timezone</code>’s arguments (a “minutes west of <abbr>GMT</abbr>” value and a “daylight saving time in effect” flag) to a time zone abbreviation, and we refuse to guess. Programs that in the past used the <code>timezone</code> function may now examine <code>localtime(&clock)->tm_zone</code> (if <code>TM_ZONE</code> is defined) or use <code>strftime</code> with a <code>%Z</code> conversion specification to learn the correct time zone abbreviation to use. </li> <li> The <a href="https://en.wikipedia.org/wiki/History_of_the_Berkeley_Software_Distribution#4.2BSD"><abbr>4.2BSD</abbr></a> <code>gettimeofday</code> function is not used in this package. This formerly let users obtain the current <abbr>UTC</abbr> offset and <abbr>DST</abbr> flag, but this functionality was removed in later versions of <abbr>BSD</abbr>. </li> <li> In <abbr>SVR2</abbr>, time conversion fails for near-minimum or near-maximum <code>time_t</code> values when doing conversions for places that do not use <abbr>UT</abbr>. This package takes care to do these conversions correctly. A comment in the source code tells how to get compatibly wrong results. </li> <li> The functions that are conditionally compiled if <code>STD_INSPIRED</code> is nonzero should, at this point, be looked on primarily as food for thought. They are not in any sense “standard compatible” – some are not, in fact, specified in <em>any</em> standard. They do, however, represent responses of various authors to standardization proposals. </li> <li> Other time conversion proposals, in particular those supported by the <a href="https://howardhinnant.github.io/date/tz.html">Time Zone Database Parser</a>, offer a wider selection of functions that provide capabilities beyond those provided here. The absence of such functions from this package is not meant to discourage the development, standardization, or use of such functions. Rather, their absence reflects the decision to make this package contain valid extensions to POSIX, to ensure its broad acceptability. If more powerful time conversion functions can be standardized, so much the better. </li> </ul> </section> <section> <h2 id="stability">Interface stability</h2> <p> The <code><abbr>tz</abbr></code> code and data supply the following interfaces: </p> <ul> <li> A set of timezone names as per “<a href="#naming">Timezone identifiers</a>” above. </li> <li> Library functions described in “<a href="#functions">Time and date functions</a>” above. </li> <li> The programs <code>tzselect</code>, <code>zdump</code>, and <code>zic</code>, documented in their man pages. </li> <li> The format of <code>zic</code> input files, documented in the <code>zic</code> man page. </li> <li> The format of <code>zic</code> output files, documented in the <code>tzfile</code> man page. </li> <li> The format of zone table files, documented in <code>zone1970.tab</code>. </li> <li> The format of the country code file, documented in <code>iso3166.tab</code>. </li> <li> The version number of the code and data, as the first line of the text file "<code>version</code>" in each release. </li> </ul> <p> Interface changes in a release attempt to preserve compatibility with recent releases. For example, <code><abbr>tz</abbr></code> data files typically do not rely on recently added <code>zic</code> features, so that users can run older <code>zic</code> versions to process newer data files. <a href="tz-link.html#download">Downloading the <code><abbr>tz</abbr></code> database</a> describes how releases are tagged and distributed. </p> <p> Interfaces not listed above are less stable. For example, users should not rely on particular <abbr>UT</abbr> offsets or abbreviations for timestamps, as data entries are often based on guesswork and these guesses may be corrected or improved. </p> <p> Timezone boundaries are not part of the stable interface. For example, even though the <samp>Asia/Bangkok</samp> timezone currently includes Chang Mai, Hanoi, and Phnom Penh, this is not part of the stable interface and the timezone can split at any time. If a calendar application records a future event in some location other than Bangkok by putting <samp>Asia/Bangkok</samp> in the event’s record, the application should be robust in the presence of timezone splits between now and the future time. </p> </section> <section> <h2 id="leapsec">Leap seconds</h2> <p> Leap seconds were introduced in 1972 to accommodate the difference between atomic time and the less regular rotation of the earth. Unfortunately they have caused so many problems with civil timekeeping that there are <a href="https://www.bipm.org/en/cgpm-2022/resolution-4">plans to discontinue them by 2035</a>. Even if these plans come to fruition, a record of leap seconds will still be needed to resolve timestamps from 1972 through 2035, and there may also be a need to record whatever mechanism replaces them. </p> <p> The <code><abbr>tz</abbr></code> code and data can account for leap seconds, thanks to code contributed by Bradley White. However, the leap second support of this package is rarely used directly because POSIX requires leap seconds to be excluded and many software packages would mishandle leap seconds if they were present. Instead, leap seconds are more commonly handled by occasionally adjusting the operating system kernel clock as described in <a href="tz-link.html#precision">Precision timekeeping</a>, and this package by default installs a <samp>leapseconds</samp> file commonly used by <a href="https://www.ntp.org"><abbr title="Network Time Protocol">NTP</abbr></a> software that adjusts the kernel clock. However, kernel-clock twiddling approximates UTC only roughly, and systems needing more precise UTC can use this package’s leap second support directly. </p> <p> The directly supported mechanism assumes that <code>time_t</code> counts of seconds since the POSIX epoch normally include leap seconds, as opposed to POSIX <code>time_t</code> counts which exclude leap seconds. This modified timescale is converted to <abbr>UTC</abbr> at the same point that time zone and <abbr>DST</abbr> adjustments are applied – namely, at calls to <code>localtime</code> and analogous functions – and the process is driven by leap second information stored in alternate versions of the <abbr>TZif</abbr> files. Because a leap second adjustment may be needed even if no time zone correction is desired, calls to <code>gmtime</code>-like functions also need to consult a <abbr>TZif</abbr> file, conventionally named <samp><abbr>Etc/UTC</abbr></samp> (<samp><abbr>GMT</abbr></samp> in previous versions), to see whether leap second corrections are needed. To convert an application’s <code>time_t</code> timestamps to or from POSIX <code>time_t</code> timestamps (for use when, say, embedding or interpreting timestamps in portable <a href="https://en.wikipedia.org/wiki/Tar_(computing)"><code>tar</code></a> files), the application can call the utility functions <code>time2posix</code> and <code>posix2time</code> included with this package. </p> <p> If the POSIX-compatible <abbr>TZif</abbr> file set is installed in a directory whose basename is <samp>zoneinfo</samp>, the leap-second-aware file set is by default installed in a separate directory <samp>zoneinfo-leaps</samp>. Although each process can have its own time zone by setting its <code>TZ</code> environment variable, there is no support for some processes being leap-second aware while other processes are POSIX-compatible; the leap-second choice is system-wide. So if you configure your kernel to count leap seconds, you should also discard <samp>zoneinfo</samp> and rename <samp>zoneinfo-leaps</samp> to <samp>zoneinfo</samp>. Alternatively, you can install just one set of <abbr>TZif</abbr> files in the first place; see the <code>REDO</code> variable in this package’s <a href="https://en.wikipedia.org/wiki/Makefile">makefile</a>. </p> </section> <section> <h2 id="calendar">Calendrical issues</h2> <p> Calendrical issues are a bit out of scope for a time zone database, but they indicate the sort of problems that we would run into if we extended the time zone database further into the past. An excellent resource in this area is Edward M. Reingold and Nachum Dershowitz, <cite><a href="https://www.cambridge.org/fr/universitypress/subjects/computer-science/computing-general-interest/calendrical-calculations-ultimate-edition-4th-edition">Calendrical Calculations: The Ultimate Edition</a></cite>, Cambridge University Press (2018). Other information and sources are given in the file "<code>calendars</code>" in the <code><abbr>tz</abbr></code> distribution. They sometimes disagree. </p> </section> <section> <h2 id="planets">Time and time zones off Earth</h2> <p> The European Space Agency is <a href="https://www.esa.int/Applications/Satellite_navigation/Telling_time_on_the_Moon">considering</a> the establishment of a reference timescale for the Moon, which has days roughly equivalent to 29.5 Earth days, and where relativistic effects cause clocks to tick slightly faster than on Earth. Also, <abbr title="National Aeronautics and Space Administration">NASA</abbr> has been <a href="https://bidenwhitehouse.archives.gov/wp-content/uploads/2024/04/Celestial-Time-Standardization-Policy.pdf">ordered</a> to consider the establishment of Coordinated Lunar Time (<abbr>LTC</abbr>). It is not yet known whether the US and European efforts will result in multiple timescales on the Moon. </p> <p> Some people’s work schedules have used <a href="https://en.wikipedia.org/wiki/Timekeeping_on_Mars">Mars time</a>. Jet Propulsion Laboratory (JPL) coordinators kept Mars time on and off during the <a href="https://en.wikipedia.org/wiki/Mars_Pathfinder">Mars Pathfinder</a> mission (1997). Some of their family members also adapted to Mars time. Dozens of special Mars watches were built for JPL workers who kept Mars time during the <a href="https://en.wikipedia.org/wiki/Mars_Exploration_Rover">Mars Exploration Rovers (MER)</a> mission (2004–2018). These timepieces looked like normal Seikos and Citizens but were adjusted to use Mars seconds rather than terrestrial seconds, although unfortunately the adjusted watches were unreliable and appear to have had only limited use. </p> <p> A Mars solar day is called a “sol” and has a mean period equal to about 24 hours 39 minutes 35.244 seconds in terrestrial time. It is divided into a conventional 24-hour clock, so each Mars second equals about 1.02749125 terrestrial seconds. (One MER worker noted, “If I am working Mars hours, and Mars hours are 2.5% more than Earth hours, shouldn’t I get an extra 2.5% pay raise?”) </p> <p> The <a href="https://en.wikipedia.org/wiki/Prime_meridian">prime meridian</a> of Mars goes through the center of the crater <a href="https://en.wikipedia.org/wiki/Airy-0">Airy-0</a>, named in honor of the British astronomer who built the Greenwich telescope that defines Earth’s prime meridian. Mean solar time on the Mars prime meridian is called Mars Coordinated Time (<abbr>MTC</abbr>). </p> <p> Each landed mission on Mars has adopted a different reference for solar timekeeping, so there is no real standard for Mars time zones. For example, the MER mission defined two time zones “Local Solar Time A” and “Local Solar Time B” for its two missions, each zone designed so that its time equals local true solar time at approximately the middle of the nominal mission. The A and B zones differ enough so that an MER worker assigned to the A zone might suffer “Mars lag” when switching to work in the B zone. Such a “time zone” is not particularly suited for any application other than the mission itself. </p> <p> Many calendars have been proposed for Mars, but none have achieved wide acceptance. Astronomers often use Mars Sol Date (<abbr>MSD</abbr>) which is a sequential count of Mars solar days elapsed since about 1873-12-29 12:00 <abbr>GMT</abbr>. </p> <p> In our solar system, Mars is the planet with time and calendar most like Earth’s. On other planets, Sun-based time and calendars would work quite differently. For example, although Mercury’s <a href="https://en.wikipedia.org/wiki/Rotation_period">sidereal rotation period</a> is 58.646 Earth days, Mercury revolves around the Sun so rapidly that an observer on Mercury’s equator would see a sunrise only every 175.97 Earth days, i.e., a Mercury year is 0.5 of a Mercury day. Venus is more complicated, partly because its rotation is slightly <a href="https://en.wikipedia.org/wiki/Retrograde_motion">retrograde</a>: its year is 1.92 of its days. Gas giants like Jupiter are trickier still, as their polar and equatorial regions rotate at different rates, so that the length of a day depends on latitude. This effect is most pronounced on Neptune, where the day is about 12 hours at the poles and 18 hours at the equator. </p> <p> Although the <code><abbr>tz</abbr></code> database does not support time on other planets, it is documented here in the hopes that support will be added eventually. </p> <p> Sources for time on other planets: </p> <ul> <li> Michael Allison and Robert Schmunk, “<a href="https://www.giss.nasa.gov/tools/mars24/help/notes.html">Technical Notes on Mars Solar Time as Adopted by the Mars24 Sunclock</a>” (2020-03-08). </li> <li> Zara Mirmalek, <em><a href="https://mitpress.mit.edu/books/making-time-mars">Making Time on Mars</a></em>, MIT Press (March 2020), ISBN 978-0262043854. </li> <li> Jia-Rui Chong, “<a href="https://www.latimes.com/archives/la-xpm-2004-jan-14-sci-marstime14-story.html">Workdays Fit for a Martian</a>”, <cite>Los Angeles Times</cite> (2004-01-14), pp A1, A20–A21. </li> <li> Tom Chmielewski, “<a href="https://www.theatlantic.com/technology/archive/2015/02/jet-lag-is-worse-on-mars/386033/">Jet Lag Is Worse on Mars</a>”, <cite>The Atlantic</cite> (2015-02-26) </li> <li> Matt Williams, “<a href="https://www.universetoday.com/articles/days-of-the-planets">How long is a day on the other planets of the solar system?</a>” (2016-01-20). </li> </ul> </section> <footer> <hr> This web page is in the public domain, so clarified as of 2009-05-17 by Arthur David Olson. <br> Please send corrections to this web page to the <a href="mailto:tz@iana.org">time zone mailing list</a>. The mailing list and its archives are public, so please do not send confidential information. </footer> </body> </html> tz-art.html000064400000060235151706426130006666 0ustar00<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> ul {padding-left: 1.3rem;} </style> <title>Time and the Arts</title> </head> <body> <h1>Time and the Arts</h1> <h2>Documentaries</h2> <ul> <li> “<a href="https://www.youtube.com/watch?v=84aWtseb2-4">Daylight Saving Time Explained</a>” (2011; 6:39) lightly covers daylight saving time’s theory, history, pros and cons. Among other things, it explains Arizona’s daylight-saving enclaves quite well. </li> <li> “<a href="https://www.youtube.com/watch?v=-5wpm-gesOY">The Problem with Time & Timezones – Computerphile</a>” (2013; 10:12) delves into problems that programmers have with timekeeping. </li> <li> “<a href="https://www.rferl.org/a/all-the-time-in-the-world/28375932.html">All The Time In The World: Explaining The Mysteries Of Time Zones</a>” (2017; 2:15) briefly says why France has more time zones than Russia. </li> <li> “<a href="https://www.youtube.com/watch?v=yRz-Dl60Lfc">Why Denmark used to be .04 seconds behind the world</a>” (2019; 6:29) explains why the United Kingdom – and, once, Denmark – haven’t always exactly followed their own laws about civil time. </li> <li> “<a href="https://www.youtube.com/watch?v=mfzsBMUiGGQ">How Daylight Savings Broke this $24 Million Building</a>” (2025; 5:01) describes the system of mirrors used at Melbourne’s Shrine of Remembrance to ensure the sun’s light still hits at the “correct” ceremonial hour to commemorate the Armistice which ended World War I. </li> <li> “About Time” (1962; 59 minutes) is part of the Bell Science extravaganza, with Frank Baxter, Richard Deacon, and Les Tremayne. Its advisor was Richard Feynman, and it was voiced by Mel Blanc. (<a href="https://www.imdb.com/title/tt0154110/">IMDb entry</a>.) </li> </ul> <h2>Movies</h2> <ul> <li> In the 1946 movie <em>A Matter of Life and Death</em> (U.S. title <em>Stairway to Heaven</em>) there is a reference to British Double Summer Time. The time does not play a large part in the plot; it’s just a passing reference to the time when one of the characters was supposed to have died (but didn’t). (<a href="https://www.imdb.com/title/tt0038733/">IMDb entry.</a>) (Dave Cantor) </li> <li> The 1953 railway comedy movie <em>The Titfield Thunderbolt</em> includes a play on words on British Double Summer Time. Valentine’s wife wants him to leave the pub and asks him, “Do you know what time it is?” And he, happy where he is, replies: “Yes, my love. Summer double time.” (<a href="https://www.imdb.com/title/tt0046436/">IMDb entry.</a>) (Mark Brader, 2009-10-02) </li> <li> The premise of the 1999 caper movie <em>Entrapment</em> involves computers in an international banking network being shut down briefly at midnight in each time zone to avoid any problems at the transition from the year 1999 to 2000 in that zone. (Hmmmm.) If this shutdown is extended by 10 seconds, it will create a one-time opportunity for a gigantic computerized theft. To achieve this, at one location the crooks interfere with the microwave system supplying time signals to the computer, advancing the time by 0.1 second each minute over the last hour of 1999. (So this movie teaches us that 0.1 × 60 = 10.) (<a href="https://www.imdb.com/title/tt0137494/">IMDb entry.</a>) (Mark Brader, 2009-10-02) </li> <li> One mustn’t forget the <a href="https://www.youtube.com/watch?v=k4EUTMPuvHo">trailer</a> (2014; 2:23) for the movie <em>Daylight Saving</em>. </li> </ul> <h2>TV episodes</h2> <ul> <li> An episode of <em>The Adventures of Superman</em> entitled “The Mysterious Cube”, first aired 1958-02-24, had Superman convincing the controllers of the Arlington Time Signal to broadcast ahead of actual time; doing so got a crook trying to be declared dead to emerge a bit too early from the titular enclosure. (<a href="https://www.imdb.com/title/tt0506628/">IMDb entry</a>.) </li> <li> “<a href="https://en.wikipedia.org/wiki/The_Chimes_of_Big_Ben">The Chimes of Big Ben</a>”, <em>The Prisoner</em>, episode 2, ITC, 1967-10-06. Our protagonist tumbles to the fraudulent nature of a Poland-to-England escape upon hearing Big Ben chiming on Polish local time. (<a href="https://www.imdb.com/title/tt0679185/">IMDb entry.</a>) </li> <li> “The Susie”, <em>Seinfeld</em>, season 8, episode 15, NBC, 1997-02-13. Kramer decides that daylight saving time isn’t coming fast enough, so he sets his watch ahead an hour. </li> <li> “20 Hours in America”, <em>The West Wing</em>, season 4, episodes 1–2, 2002-09-25, contained a <a href="https://www.youtube.com/watch?v=-J1NHzQ1sgc">scene</a> that saw White House staffers stranded in Indiana; they thought they had time to catch Air Force One but were done in by intra-Indiana local time changes. </li> <li> “In what time zone would you find New York City?” was a $200 question on the 1999-11-13 United States airing of <em>Who Wants to Be a Millionaire?</em>, and “In 1883, what industry led the movement to divide the U.S. into four time zones?” was a $32,000 question on the 2001-05-23 United States airing of the same show. At this rate, the million-dollar time-zone question should have been asked 2002-06-04. </li> <li> A private jet’s mid-flight change of time zones distorts Alison Dubois’ premonition in the “We Had a Dream” episode of <em>Medium</em> (originally aired 2007-02-28). </li> <li> A criminal’s failure to account for the start of daylight saving is pivotal in “<a href="https://monk.fandom.com/wiki/Mr._Monk_and_the_Rapper">Mr. Monk and the Rapper</a>” (first aired 2007-07-20). </li> <li> In the <em>30 Rock</em> episode “Anna Howard Shaw Day” (first broadcast 2010-02-11), Jack Donaghy’s date realizes that a Geneva-to-New-York business phone call received in the evening must be fake given the difference in local times. </li> <li> In the “Run by the Monkeys” episode of <em>Da Vinci’s Inquest</em> (first broadcast 2002-11-17), a witness in a five-year-old fire case realizes they may not have set their clock back when daylight saving ended on the day of the fire, introducing the possibility of an hour when arson might have occurred. </li> <li> In “The Todd Couple” episode of <em>Outsourced</em> (first aired 2011-02-10), Manmeet sets up Valentine’s Day teledates for 6:00 and 9:00pm; since one is with a New Yorker and the other with a San Franciscan, hilarity ensues. (Never mind that this should be 7:30am in Mumbai, yet for some reason the show proceeds as though it’s also mid-evening there.) </li> <li> In the “14 Days to Go”/“T Minus...” episode of <em>You, Me and the Apocalypse</em> (first aired 2015-11-11 in the UK, 2016-03-10 in the US), the success of a mission to deal with a comet hinges on whether or not Russia observes daylight saving time. (In the US, the episode first aired in the week before the switch to <abbr>DST</abbr>.) </li> <li> “The Lost Hour”, <em>Eerie, Indiana</em>, episode 10, NBC, 1991-12-01. Despite Indiana’s then-lack of <abbr>DST</abbr>, Marshall changes his clock with unusual consequences. See “<a href="https://www.avclub.com/eerie-indiana-was-a-few-dimensions-ahead-of-its-time-1819833380"><em>Eerie, Indiana</em> was a few dimensions ahead of its time</a>”. </li> <li> “Time Tunnel”, <em>The Adventures of Pete & Pete</em>, season 2, episode 5, Nickelodeon, 1994-10-23. The two Petes travel back in time an hour on the day that <abbr>DST</abbr> ends. </li> <li> “King-Size Homer”, <em>The Simpsons</em>, episode 135, Fox, 1995-11-05. Homer, working from home, remarks “8:58, first time I’ve ever been early for work. Except for all those daylight savings days. Lousy farmers.” </li> <li> <em>Last Week Tonight with John Oliver</em>, season 2, episode 5, 2015-03-08, asked, “<a href="https://www.youtube.com/watch?v=br0NW9ufUUw">Daylight Saving Time – How Is This Still A Thing?</a>” </li> <li> “Tracks”, <em>The Good Wife</em>, season 7, episode 12, CBS, 2016-01-17. The applicability of a contract hinges on the time zone associated with a video timestamp. </li> <li> “Justice”, <em>Veep</em>, season 6, episode 4, HBO, 2017-05-07. Jonah’s inability to understand <abbr>DST</abbr> ends up impressing a wealthy backer who sets him up for a 2020 presidential run. </li> </ul> <h2>Books, plays, and magazines</h2> <ul> <li> Jules Verne, <em>Around the World in Eighty Days</em> (<em>Le tour du monde en quatre-vingts jours</em>), 1873. Wall-clock time plays a central role in the plot. European readers of the 1870s clearly held the U.S. press in deep contempt; the protagonists cross the U.S. without once reading a paper. Available versions include <a href="https://www.gutenberg.org/ebooks/103">an English translation</a>, and <a href="https://fourmilab.ch/etexts/www/tdm80j/">the original French</a> “with illustrations from the original 1873 French-language edition”. </li> <li> Nick Enright, <em>Daylight Saving</em>, 1989. A fast-paced comedy about love and loneliness as the clocks turn back. </li> <li> Umberto Eco, <a href="https://en.wikipedia.org/wiki/The_Island_of_the_Day_Before"><em>The Island of the Day Before</em></a> (<em>L’isola del giorno prima</em>), 1994. “...the story of a 17th century Italian nobleman trapped near an island on the International Date Line. Time and time zones play an integral part in the novel.” (Paul Eggert, 2006-04-22) </li> <li> John Dunning, <a href="https://www.simonandschuster.com/books/Two-OClock-Eastern-Wartime/John-Dunning/9781439171530"><em>Two O’Clock, Eastern Wartime</em></a>, 2001. Mystery, history, daylight saving time, and old-time radio. </li> <li> Surrealist artist Guy Billout’s work “Date Line” appeared on page 103 of the 1999-11 <em>Atlantic Monthly</em>. </li> <li> “Gloom, Gloom, Go Away” by Walter Kirn appeared on page 106 of <em>Time</em> magazine’s 2002-11-11 issue; among other things, it proposed year-round <abbr>DST</abbr> as a way of lessening wintertime despair. </li> <li> Cory Doctorow, <a href="https://craphound.com/est/download/"><em>Eastern Standard Tribe</em></a>, 2004. The world splinters into tribes characterized by their timezones. </li> </ul> <h2>Music</h2> <ul> <li> Recordings of “Save That Time”, Russ Long, Serrob Publishing, BMI: <ul> <li> Karrin Allyson, <em>I Didn’t Know About You</em> (1993), track 11, 3:44. Concord Jazz CCD-4543. Karrin Allyson, vocal; Russ Long, piano; Gerald Spaits, bass; Todd Strait, drums. CD notes “additional lyric by Karrin Allyson; arranged by Russ Long and Karrin Allyson”. ADO ★, <a href="https://www.allmusic.com/album/i-didnt-know-about-you-mw0000618657">AMG</a> ★★★★, Penguin ★★★⯪. </li> <li> Kevin Mahogany, <em>Double Rainbow</em> (1993), track 3, 6:27. Enja ENJ-7097 2. Kevin Mahogany, vocal; Kenny Barron, piano; Ray Drummond, bass; Ralph Moore, tenor saxophone; Lewis Nash, drums. ADO ★⯪, <a href="https://www.allmusic.com/album/double-rainbow-mw0000620371">AMG</a> ★★★, Penguin ★★★. </li> <li> Joe Williams, <em>Here’s to Life</em> (1994), track 7, 3:58. Telarc Jazz CD-83357. Joe Williams, vocal; The Robert Farnon [39 piece] Orchestra. Also in a 3-CD package “Triple Play”, Telarc CD-83461. ADO •, <a href="https://www.allmusic.com/album/heres-to-life-mw0000623648">AMG</a> ★★, Penguin ★★★. </li> <li> Charles Fambrough, <em>Keeper of the Spirit</em> (1995), track 7, 7:07. AudioQuest AQ-CD1033. Charles Fambrough, bass; Joel Levine, tenor recorder; Edward Simon, piano; Lenny White, drums; Marion Simon, percussion. ADO ★, <a href="https://www.allmusic.com/album/keeper-of-the-spirit-mw0000176559">AMG</a> unrated, Penguin ★★★. </ul> </li> <li> Holly Cole Trio, Blame It On My Youth (1992). Manhattan CDP 7 97349 2, 37:45. Holly Cole, voice; Aaron Davis, piano; David Piltch, string bass. Lyrical reference to “Eastern Standard Time” in Tom Waits’s “Purple Avenue”. ADO ★★⯪, <a href="https://www.allmusic.com/album/blame-it-on-my-youth-mw0000274303">AMG</a> ★★★, Penguin unrated. </li> <li> Milt Hinton, <a href="https://chiaroscurojazz.org/catalog/old-man-time-2-cd-set/"><em>Old Man Time</em></a> (1990). Chiaroscuro CR(D) 310, 149:38 (two CDs). Milt Hinton, bass; Doc Cheatham, Dizzy Gillespie, Clark Terry, trumpet; Al Grey, trombone; Eddie Barefield, Joe Camel (Flip Phillips), Buddy Tate, clarinet and saxophone; John Bunch, Red Richards, Norman Simmons, Derek Smith, Ralph Sutton, piano; Danny Barker, Al Casey, guitar; Gus Johnson, Gerryck King, Bob Rosengarden, Jackie Williams, drums; Lionel Hampton, vibraphone; Cab Calloway, Joe Williams, vocal; Buck Clayton, arrangements. Tunes include “Old Man Time”, “Time After Time”, “Sometimes I’m Happy”, “A Hot Time in the Old Town Tonight”, “Four or Five Times”, “Now’s the Time”, “Time on My Hands”, “This Time It’s Us”, and “Good Time Charlie”. ADO ★★★, <a href="https://www.allmusic.com/album/old-man-time-mw0000269353">AMG</a> ★★★★⯪, Penguin ★★★. </li> <li> Alan Broadbent, <em>Pacific Standard Time</em> (1995). Concord Jazz CCD-4664, 62:42. Alan Broadbent, piano; Putter Smith, Bass; Frank Gibson, Jr., drums. The CD cover features an analemma for equation-of-time fans. ADO ★, <a href="https://www.allmusic.com/album/pacific-standard-time-mw0000645433">AMG</a> ★★★★, Penguin ★★★⯪. </li> <li> Anthony Braxton/Richard Teitelbaum, <em>Silence/Time Zones</em> (1996). Black Lion BLCD 760221, 72:58. Anthony Braxton, sopranino and alto saxophones, contrebasse clarinet, miscellaneous instruments; Leo Smith, trumpet and miscellaneous instruments; Leroy Jenkins, violin and miscellaneous instruments; Richard Teitelbaum, modular moog and micromoog synthesizer. ADO •, <a href="https://www.allmusic.com/album/silence-time-zones-mw0000595735">AMG</a> ★★★★. </li> <li> Charles Gayle, <em>Time Zones</em> (2006). Tompkins Square TSQ2839, 49:06. Charles Gayle, piano. ADO ★, <a href="https://www.allmusic.com/album/time-zones-mw0000349642">AMG</a> ★★★★⯪. </li> <li> The Get Up Kids, <em>Eudora</em> (2001). Vagrant 357, 65:12. Includes the song “Central Standard Time”. Thanks to Colin Bowern for this information. <a href="https://www.allmusic.com/album/eudora-mw0000592063">AMG</a> ★★⯪. </li> <li> Coldplay, “Clocks” (2003). Capitol 52608, 4:13. Won the 2004 Record of the Year honor at the Grammy Awards. Co-written and performed by Chris Martin, great-great-grandson of <abbr>DST</abbr> inventor William Willett. The song’s first line is “Lights go out and I can’t be saved”. </li> <li> Jaime Guevara, “<a href="https://www.youtube.com/watch?v=ZfN4Fe_A50U">Qué hora es</a>” (1993), 3:04. The song protested “Sixto Hour” in Ecuador (1992–3). Its lyrics include “Amanecía en mitad de la noche, los guaguas iban a clase sin sol” (“It was dawning in the middle of the night, the buses went to class without sun”). </li> <li> Irving Kahal and Harry Richman, “There Ought to be a Moonlight Saving Time” (1931). This musical standard was a No. 1 hit for Guy Lombardo in 1931, and was also performed by Maurice Chevalier, Blossom Dearie and many others. The phrase “Moonlight saving time” also appears in the 1995 country song “Not Enough Hours in the Night” written by Aaron Barker, Kim Williams and Rob Harbin and performed by Doug Supernaw. </li> <li> The Microscopic Septet, <em>Lobster Leaps In</em> (2008). Cuneiform 272, 73:05. Includes the song “Twilight Time Zone”. ADO ★★, <a href="https://www.allmusic.com/album/lobster-leaps-in-mw0000794929">AMG</a> ★★★⯪. </li> <li> Bob Dylan, <em>The Times They Are a-Changin’</em> (1964). Columbia CK-8905, 45:36. ADO ★⯪, <a href="https://www.allmusic.com/album/the-times-they-a-changin-mw0000202344">AMG</a> ★★★★⯪. The title song is also available on “Bob Dylan’s Greatest Hits” and “The Essential Bob Dylan”. </li> <li> Luciana Souza, <em>Tide</em> (2009). Universal Jazz France B0012688-02, 42:31. ADO ★★⯪, <a href="https://www.allmusic.com/album/tide-mw0000815692">AMG</a> ★★★⯪. Includes the song “Fire and Wood” with the lyric “The clocks were turned back you remember/Think it’s still November.” </li> <li> Ken Nordine, <em>You’re Getting Better: The Word Jazz Dot Masters</em> (2005). Geffen B0005171-02, 156:22. ADO ★, <a href="https://www.allmusic.com/album/youre-getting-better-the-word-jazz-dot-masters-mw0000736197">AMG</a> ★★★★⯪. Includes the piece “What Time Is It” (“He knew what time it was everywhere...that counted”). </li> <li> Chicago, <em>Chicago Transit Authority</em> (1969). Columbia 64409, 1:16:20. <a href="https://www.allmusic.com/album/chicago-transit-authority-mw0000189364">AMG</a> ★★★★. Includes the song “Does Anybody Really Know What Time It Is?”. </li> <li> Emanuele Arciuli, <a href="https://neumarecords.org/ols/products/william-duckworth-the-time-curve-preludes"><em>The Time Curve Preludes</em></a> (2023). Neuma 174, 44:46. The title piece, composed by <a href="https://en.wikipedia.org/wiki/William_Duckworth_(composer)">William Duckworth</a>, is the first work of postminimal music. Unlike minimalism, it does not assume that the listener has plenty of time. </li> </ul> <h2>Comics</h2> <ul> <li> The webcomic <em>xkcd</em> has the strips “<a href="https://xkcd.com/673/">The Sun</a>” (2009-12-09), “<a href="https://xkcd.com/1655/">Doomsday Clock</a>” (2016-03-14) and “<a href="https://xkcd.com/2549/">Edge Cake</a>” (2021-12-01), along with the panels “<a href="https://xkcd.com/448/">Good Morning</a>” (2008-07-11), “<a href="https://xkcd.com/1017/">Backward in Time</a>” (2012-02-14), “<a href="https://xkcd.com/1061/">EST</a>” (2012-05-28), “<a href="https://xkcd.com/1179/">ISO 8601</a>” (2013-02-27), “<a href="https://xkcd.com/1335/">Now</a>” (2014-02-26), “<a href="https://xkcd.com/1799/">Bad Map Projection: Time Zones</a>” (2017-02-15), “<a href="https://xkcd.com/1883/">Supervillain Plan</a>” (2017-08-30), “<a href="https://xkcd.com/2050/">6/6 Time</a>” (2018-09-24), “<a href="https://xkcd.com/2092/">Consensus New Year</a>” (2018-12-31), “<a href="https://xkcd.com/2266/">Leap Smearing</a>” (2020-02-10), “<a href="https://xkcd.com/2594/">Consensus Time</a>” (2022-03-16), “<a href="https://xkcd.com/2846/">Daylight Saving Choice</a>” (2023-10-25), “<a href="https://xkcd.com/2854/">Date Line</a>” (2023-11-13), and “<a href="https://xkcd.com/2867/">DateTime</a>” (2023-12-13). The related book <em>What If?</em> has an entry “<a href="https://what-if.xkcd.com/26/">Leap Seconds</a>” (2012-12-31). </li> <li> Pig kills time in <a href="https://www.gocomics.com/pearlsbeforeswine/2016/11/06"><em>Pearls Before Swine</em> (2016-11-06)</a>. </li> <li> Stonehenge is abandoned in <a href="https://www.gocomics.com/nonsequitur/2017/03/12"><em>Non Sequitur</em> (2017-03-12)</a>. </li> <li> Caulfield proposes changing clocks just once a year in <a href="https://www.gocomics.com/frazz/2023/12/31"><em>Frazz</em> (2023-12-31)</a>, while Peter and Jason go multi-lingual and -zonal in <a href="https://www.gocomics.com/foxtrot/2023/12/31"><em>FoxTrot</em> (the same day)</a>. </li> <li> Peppermint Patty: “What if the world comes to an end tonight, Marcie?” <br> Marcie: “I promise there’ll be a tomorrow, sir ... in fact, it’s already tomorrow in Australia!” <br> (Charles M. Schulz, <a href="https://www.gocomics.com/peanuts/1980/06/13"><em>Peanuts</em>, 1980-06-13</a>) </li> </ul> <h2>Jokes</h2> <ul> <li> The idea behind daylight saving time was first proposed as a joke by Benjamin Franklin. To enforce it, he suggested, “Every morning, as soon as the sun rises, let all the bells in every church be set ringing; and if that is not sufficient, let cannon be fired in every street, to wake the sluggards effectually, and make them open their eyes to see their true interest. All the difficulty will be in the first two or three days: after which the reformation will be as natural and easy as the present irregularity; for, <em>ce n’est que le premier pas qui coûte</em>.” <a href="https://www.webexhibits.org/daylightsaving/franklin3.html">Franklin’s joke</a> was first published on 1784-04-26 by the <em>Journal de Paris</em> as <a href="https://en.wikipedia.org/wiki/File:Franklin-Benjamin-Journal-de-Paris-1784.jpg">an anonymous letter translated into French</a>. </li> <li> “We’ve been using the five-cent nickel in this country since 1492. Now that’s pretty near 100 years, daylight saving.” (Groucho Marx as Captain Spaulding in <em>Animal Crackers</em>, 1930, as noted by Will Fitzgerald) </li> <li> BRADY. ...[Bishop Usher] determined that the Lord began the Creation on the 23rd of October in the Year 4,004 B.C. at – uh, 9 A.M.! <br> DRUMMOND. That Eastern Standard Time? (<em>Laughter.</em>) Or Rocky Mountain Time? (<em>More laughter.</em>) It wasn’t daylight-saving time, was it? Because the Lord didn’t make the sun until the fourth day! <br> (From the play <em>Inherit the Wind</em> by Jerome Lawrence and Robert E. Lee, filmed in 1960 with Spencer Tracy as Drummond and Fredric March as Brady, and several other times. Thanks to Mark Brader.) </li> <li> “Good news.” “What did they do? Extend Daylight Saving Time year round?” (Professional tanner George Hamilton, in dialog from a May, 1999 episode of the syndicated television series <em>Baywatch</em>) </li> <li> “A fundamental belief held by Americans is that if you are on land, you cannot be killed by a fish...So most Americans remain on land, believing they’re safe. Unfortunately, this belief – like so many myths, such as that there’s a reason for ‘Daylight Saving Time’ – is false.” (Dave Barry column, 2000-07-02) </li> <li> “I once had sex for an hour and five minutes, but that was on the day when you turn the clocks ahead.” (Garry Shandling, 52nd Annual Emmys, 2000-09-10) </li> <li> “Would it impress you if I told you I invented Daylight Savings Time?” (“Sahjhan” to “Lilah” in dialog from the “Loyalty” episode of <em>Angel</em>, originally aired 2002-02-25) </li> <li> “I thought you said Tulsa was a three-hour flight.” “Well, you’re forgetting about the time difference.” (“Joey” and “Chandler” in dialog from the episode of <em>Friends</em> entitled “The One With Rachel’s Phone Number”, originally aired 2002-12-05) </li> <li> “Is that a pertinent fact, or are you just trying to dazzle me with your command of time zones?” (Kelsey Grammer as “Frasier Crane” to “Roz” from the episode of <em>Frasier</em> entitled “The Kid”, originally aired 1997-11-04) </li> <li> “I put myself and my staff through this crazy, huge ordeal, all because I refused to go on at midnight, okay? And so I work, you know, and then I get this job at eleven, supposed to be a big deal. Then yesterday daylight [saving] time ended. Right now it’s basically midnight.” (Conan O’Brien on the 2010-11-08 premiere of <em>Conan</em>) </li> <li> “The best method, I told folks, was to hang a large clock high on a barn wall where all the cows could see it. If you have Holsteins, you will need to use an analog clock.” (Jerry Nelson, “<a href="https://www.agriculture.com/family/farm-humor/how-to-adjust-dairy-cows-to-daylight-savings-time">How to adjust dairy cows to daylight saving time</a>”, <em>Successful Farming</em>, 2017-10-09) </li> <li> “And now, driving to California, I find that I must enter a password in order to change the time zone on my laptop clock. Evidently, someone is out to mess up my schedule and my clock must be secured.” (Garrison Keillor, “<a href="https://www.garrisonkeillor.com/weve-never-been-here-before/">We’ve never been here before</a>”, 2017-08-22) </li> <li> “Well, in my time zone that’s all the time I have, but maybe in your time zone I haven’t finished yet. So stay tuned!” (Goldie Hawn, <em>Rowan & Martin’s Laugh-In</em> No. 65, 1970-03-09) </li> </ul> <h2>See also</h2> <ul> <li><a href="tz-link.html">Time Zone and Daylight Saving Time Data</a></li> </ul> <footer> <hr> This web page is in the public domain, so clarified as of 2009-05-17 by Arthur David Olson. <br> Please send corrections to this web page to the <a href="mailto:tz@iana.org">time zone mailing list</a>. The mailing list and its archives are public, so please do not send confidential information. </footer> </body> </html> tz-link.html000064400000174424151706426130007043 0ustar00<!DOCTYPE html> <html lang="en"> <head> <title>Time zone and daylight saving time data</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> dd {margin-left: 1.3rem;} pre {margin-left: 1.3rem; overflow: auto;} ul {padding-left: 1.3rem;} </style> </head> <body> <h1>Time zone and daylight saving time data</h1> <p> <a href="https://en.wikipedia.org/wiki/Time_zone">Time zone</a> and <a href="https://en.wikipedia.org/wiki/Daylight_saving_time">daylight-saving</a> rules are controlled by individual governments. They are sometimes changed with little notice, and their histories and planned futures are often recorded only fitfully. Here is a summary of attempts to organize and record relevant data in this area. </p> <nav> <ul> <li>The <code><abbr>tz</abbr></code> database product and process <ul> <li><a href="#tzdb">The <code><abbr>tz</abbr></code> database</a></li> <li><a href="#download">Downloading the <code><abbr>tz</abbr></code> database</a></li> <li><a href="#changes">Changes to the <code><abbr>tz</abbr></code> database</a></li> <li><a href="#coordinating">Coordinating with governments and distributors</a></li> <li><a href="#commentary">Commentary on the <code><abbr>tz</abbr></code> database</a></li> </ul> </li> <li>Uses of the <code><abbr>tz</abbr></code> database <ul> <li><a href="#web">Web sites using recent versions of the <code><abbr>tz</abbr></code> database</a></li> <li><a href="#protocols">Network protocols for <code><abbr>tz</abbr></code> data</a></li> <li><a href="#compilers">Other <code><abbr>tz</abbr></code> compilers</a></li> <li><a href="#TZif">Other <abbr>TZif</abbr> readers</a></li> <li><a href="#software">Other <code><abbr>tz</abbr></code>-based time zone software</a></li> </ul> </li> <li>Related data <ul> <li><a href="#other-dbs">Other time zone databases</a></li> <li><a href="#maps">Maps</a></li> <li><a href="#boundaries">Time zone boundaries</a></li> </ul> </li> <li>Timekeeping concepts <ul> <li><a href="#civil">Civil time concepts and history</a></li> <li><a href="#national">National histories of legal time</a></li> <li><a href="#costs">Costs and benefits of time shifts</a></li> <li><a href="#precision">Precision timekeeping</a></li> <li><a href="#notation">Time notation</a></li> </ul> </li> <li><a href="#see-also">See also</a></li> </ul> </nav> <section> <h2 id="tzdb">The <code><abbr title="time zone">tz</abbr></code> database</h2> <p> The <a href="https://en.wikipedia.org/wiki/Public_domain">public-domain</a> time zone database contains code and data that represent the history of local time for many representative locations around the globe. It is updated periodically to reflect changes made by political bodies to time zone boundaries and daylight saving rules. This database (known as <code><abbr>tz</abbr></code>, <code><abbr>tzdb</abbr></code>, or <code>zoneinfo</code>) is used by several implementations, including <a href="https://www.gnu.org/software/libc/">the <abbr title="GNU’s Not Unix">GNU</abbr> C Library</a> (used in <a href="https://en.wikipedia.org/wiki/Linux"><abbr>GNU</abbr>/Linux</a>), <a href="https://www.android.com">Android</a>, <a href="https://www.freebsd.org">Free<abbr title="Berkeley Software Distribution">BSD</abbr></a>, <a href="https://netbsd.org">Net<abbr>BSD</abbr></a>, <a href="https://www.openbsd.org">Open<abbr>BSD</abbr></a>, <a href="https://www.chromium.org/chromium-os/">ChromiumOS</a>, <a href="https://cygwin.com">Cygwin</a>, <a href="https://mariadb.org">MariaDB</a>, <a href="https://musl.libc.org">musl libc</a>, <a href="https://www.mysql.com">MySQL</a>, <a href="https://en.wikipedia.org/wiki/WebOS"><abbr title="Web Operating System">webOS</abbr></a>, <a href="https://en.wikipedia.org/wiki/IBM_AIX"><abbr title="Advanced Interactive eXecutive">AIX</abbr></a>, <a href="https://www.apple.com/os/ios/"><abbr title="iPhone OS">iOS</abbr></a>, <a href="https://www.apple.com/os/macos/">macOS</a>, <a href="https://www.microsoft.com/en-us/windows">Microsoft Windows</a>, <a href="https://vmssoftware.com">Open<abbr title="Virtual Memory System">VMS</abbr></a>, <a href="https://www.oracle.com/database/">Oracle Database</a>, <a href="https://www.oracle.com/solaris/solaris11/">Oracle Solaris</a>, and <a href="https://qnx.software/en">QNX</a>.</p> <p> Each main entry in the database represents a <dfn>timezone</dfn> for a set of civil-time clocks that have all agreed since 1970. Timezones are typically identified by continent or ocean and then by the name of the largest city within the region containing the clocks. For example, <code>America/New_York</code> represents most of the <abbr title="United States">US</abbr> eastern time zone; <code>America/Phoenix</code> represents most of Arizona, which uses mountain time without daylight saving time (<abbr>DST</abbr>); <code>America/Detroit</code> represents most of Michigan, which uses eastern time but with different <abbr>DST</abbr> rules in 1975; and other entries represent smaller regions like Starke County, Indiana, which switched from central to eastern time in 1991 and switched back in 2006. To use the database on a <a href="https://en.wikipedia.org/wiki/POSIX"><abbr title="Portable Operating System Interface">POSIX</abbr>.1-2024</a> implementation set the <code><abbr>TZ</abbr></code> environment variable to the location’s full name, e.g., <code><abbr>TZ</abbr>="America/New_York"</code>.</p> <p> Associated with each timezone is a history of offsets from <a href="https://en.wikipedia.org/wiki/Universal_Time">Universal Time</a> (<abbr>UT</abbr>), which is <a href="https://en.wikipedia.org/wiki/Greenwich_Mean_Time">Greenwich Mean Time</a> (<abbr>GMT</abbr>) with days beginning at midnight; for timestamps after 1960 this is more precisely <a href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time">Coordinated Universal Time</a> (<abbr>UTC</abbr>). The database also records when daylight saving time was in use, along with some time zone abbreviations such as <abbr>EST</abbr> for Eastern Standard Time in the <abbr>US</abbr>.</p> </section> <section> <h2 id="download">Downloading the <code><abbr>tz</abbr></code> database</h2> <p> The following <a href="https://en.wikipedia.org/wiki/Unix_shell">shell</a> commands download the latest release’s two <a href="https://en.wikipedia.org/wiki/Tar_(computing)">tarballs</a> to a <abbr>GNU</abbr>/Linux or similar host.</p> <pre><code>mkdir tzdb cd tzdb <a href="https://www.gnu.org/software/wget/">wget</a> https://www.iana.org/time-zones/repository/tzcode-latest.tar.gz wget https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz <a href="https://www.gnu.org/software/gzip/">gzip</a> -dc tzcode-latest.tar.gz | <a href="https://www.gnu.org/software/tar/">tar</a> -xf - gzip -dc tzdata-latest.tar.gz | tar -xf - </code></pre> <p>Alternatively, the following shell commands download the same release in a single-tarball format containing extra data useful for regression testing:</p> <pre><code>wget <a href="https://www.iana.org/time-zones/repository/tzdb-latest.tar.lz">https://www.iana.org/time-zones/repository/tzdb-latest.tar.lz</a> <a href="https://www.nongnu.org/lzip/">lzip</a> -dc tzdb-latest.tar.lz | tar -xf - </code></pre> <p>These commands use convenience links to the latest release of the <code><abbr>tz</abbr></code> database hosted by the <a href="https://www.iana.org/time-zones">Time Zone Database website</a> of the <a href="https://www.iana.org">Internet Assigned Numbers Authority (IANA)</a>. Older releases are in files named <code>tzcode<var>V</var>.tar.gz</code>, <code>tzdata<var>V</var>.tar.gz</code>, and <code>tzdb-<var>V</var>.tar.lz</code>, where <code><var>V</var></code> is the version. Since 1996, each version has been a four-digit year followed by lower-case letter (<samp>a</samp> through <samp>z</samp>, then <samp>za</samp> through <samp>zz</samp>, then <samp>zza</samp> through <samp>zzz</samp>, and so on). Since version 2022a, each release has been distributed in <a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/pax.html#tag_20_94_13_06">POSIX ustar interchange format</a>, compressed as described above; older releases use a nearly compatible format. Since version 2016h, each release has contained a text file named “<code>version</code>” whose first (and currently only) line is the version. <a href="https://ftp.iana.org/tz/releases/">Older archived releases are available</a> via <a href="https://en.wikipedia.org/wiki/HTTPS"><abbr title="Hypertext Transfer Protocol Secure">HTTPS</abbr></a>, <a href="https://en.wikipedia.org/wiki/Rsync"><abbr title="remote sync">rsync</abbr></a>, and <a href="https://en.wikipedia.org/wiki/FTP"><abbr title="File Transfer Protocol">FTP</abbr></a>. <p>Alternatively, a development repository of code and data can be retrieved from <a href="https://github.com">GitHub</a> via the shell command:</p> <pre><code><a href="https://git-scm.com">git</a> clone <a href="https://github.com/eggert/tz">https://github.com/eggert/tz</a> </code></pre> <p> Since version 2012e, each release has been tagged in development repositories. Untagged commits are less well tested and probably contain more errors.</p> <p> After obtaining the code and data files, see the <code>README</code> file for what to do next. The code lets you compile the <code><abbr>tz</abbr></code> source files into machine-readable binary files, one for each location. The binary files are in a special format specified by <a href="https://www.rfc-editor.org/rfc/rfc9636">The Time Zone Information Format (<abbr>TZif</abbr>)</a> (Internet <abbr title="Request For Comments">RFC</abbr> 9636). The code also lets you read a <abbr>TZif</abbr> file and interpret timestamps for that location.</p> </section> <section> <h2 id="changes">Changes to the <code><abbr>tz</abbr></code> database</h2> <p> The <code><abbr>tz</abbr></code> code and data are by no means authoritative. If you find errors, please email changes to <a href="mailto:tz@iana.org"><code>tz@iana.org</code></a>, the time zone mailing list. The mailing list and its archives are public, so please do not send confidential information. See <a href="https://lists.iana.org/postorius/lists/tz.iana.org/">the mailing list’s main page</a> to subscribe or to browse its archive of old messages. <a href="https://tzdata-meta.timtimeonline.com">Metadata for mailing list discussions</a> and corresponding data changes can be generated <a href="https://github.com/timparenti/tzdata-meta">automatically</a>. </p> <p> Changes to the <code><abbr>tz</abbr></code> code and data are often propagated to clients via operating system updates, so client <code><abbr>tz</abbr></code> data can often be corrected by applying these updates. With GNU/Linux and similar systems, if your maintenance provider has not yet adopted the latest <code><abbr>tz</abbr></code> data, you can often short-circuit the process by tailoring the generic instructions in the <code><abbr>tz</abbr> README</code> file and installing the latest data yourself. System-specific instructions for installing the latest <code><abbr>tz</abbr></code> data have also been published for <a href="https://www.ibm.com/support/pages/aix-time-zone-olson-tzdata-updates"><abbr>AIX</abbr></a>, <a href="https://source.android.com/docs/core/permissions/timezone-rules">Android</a>, <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone/"><abbr title="International Components for Unicode">ICU</abbr></a>, <a href="https://www.ibm.com/support/pages/java-sdk-time-zone-update-utility"><abbr>IBM</abbr> JDK</a>, <a href="https://www.joda.org/joda-time/tz_update.html">Joda-Time</a>, <a href="https://dev.mysql.com/doc/refman/en/time-zone-support.html">MySQL</a>, <a href="https://nodatime.org/userguide/tzdb">Noda Time</a>, and <a href="https://www.oracle.com/java/technologies/javase/tzupdater-readme.html">OpenJDK/Oracle JDK</a>. </p> <p>Since version 2013a, sources for the <code><abbr>tz</abbr></code> database have been <a href="https://en.wikipedia.org/wiki/UTF-8"><abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr></a> <a href="https://en.wikipedia.org/wiki/Text_file">text files</a> with lines terminated by <a href="https://en.wikipedia.org/wiki/Newline"><abbr title="linefeed">LF</abbr></a>, which can be modified by common text editors such as <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>, <a href="https://gedit-text-editor.org">gedit</a>, and <a href="https://www.vim.org">vim</a>. Specialized source-file editing can be done via the <a href="https://packagecontrol.io/packages/zoneinfo">Sublime zoneinfo</a> package for <a href="https://www.sublimetext.com">Sublime Text</a> and the <a href="https://marketplace.visualstudio.com/items?itemName=gilmoreorless.vscode-zoneinfo">VSCode zoneinfo</a> extension for <a href="https://code.visualstudio.com">Visual Studio Code</a>. </p> <p> For further information about updates, please see <a href="https://www.rfc-editor.org/rfc/rfc6557">Procedures for Maintaining the Time Zone Database</a> (Internet <abbr>RFC</abbr> 6557). More detail can be found in <a href="theory.html">Theory and pragmatics of the <code><abbr>tz</abbr></code> code and data</a>. <a href="https://a0.github.io/a0-tzmigration/">A0 TimeZone Migration</a> displays changes between recent <code><abbr>tzdb</abbr></code> versions. </p> </section> <section> <h2 id="coordinating">Coordinating with governments and distributors</h2> <p> As discussed in “<a href="https://www.icann.org/en/blogs/details/how-time-zones-are-coordinated-13-03-2023-en">How Time Zones Are Coordinated</a>”, the time zone database relies on collaboration among governments, the time zone database volunteer community, and data distributors downstream. <p> If your government plans to change its time zone boundaries or daylight saving rules, please send email as described in “<a href="#changes">Changes to the <code><abbr>tz</abbr></code> database</a>”. Do this well in advance, as this will lessen confusion and will coordinate updates to many cell phones, computers, and other devices around the world. In your email, please cite the legislation or regulation that specifies the change, so that it can be checked for details such as the exact times when clock transitions occur. It is OK if a rule change is planned to affect clocks far into the future, as a long-planned change can easily be reverted or otherwise altered with a year’s notice before the change would have affected clocks.</p> <p> There is no fixed schedule for <code><abbr>tzdb</abbr></code> releases. However, typically a release occurs every few months. Many downstream timezone data distributors wait for a <code><abbr>tzdb</abbr></code> release before they produce an update to time zone behavior in consumer devices and software products. After a release, various parties must integrate, test, and roll out an update before <a href="https://en.wikipedia.org/wiki/End_user">end users</a> see changes. These updates can be expensive, for both the <a href="https://en.wikipedia.org/wiki/Quality_assurance">quality assurance</a> process and the overall cost of shipping and installing updates to each device’s copy of <code><abbr>tzdb</abbr></code>. Updates may be batched with other updates and may take substantial time to reach end users after a release. Older devices may no longer be supported and thus may never be updated, which means they will continue to use out-of-date rules.</p> <p> For these reasons any rule change should be promulgated at least a year before it affects how clocks operate; otherwise, there is a good chance that many clocks will be wrong due to delays in propagating updates, and that residents will be confused or even actively resist the change. The shorter the notice, the more likely clock problems will arise; see “<a href="https://codeofmatt.com/on-the-timing-of-time-zone-changes/">On the Timing of Time Zone Changes</a>” for examples. </p> </section> <section> <h2 id="commentary">Commentary on the <code><abbr>tz</abbr></code> database</h2> <ul> <li>The article <a href="https://en.wikipedia.org/wiki/Tz_database">tz database</a> is an encyclopedic summary.</li> <li><a href="tz-how-to.html">How to Read the tz Database Source Files</a> explains the <code><abbr>tz</abbr></code> database format.</li> <li><a href="https://blog.jonudell.net/2009/10/23/a-literary-appreciation-of-the-olsonzoneinfotz-database/">A literary appreciation of the Olson/Zoneinfo/tz database</a> comments on the database’s style.</li> <li><a href="https://doi.org/10.1145/3340301.3341125">What time is it: managing time in the internet</a> analyzes the database longitudinally.</li> </ul> </section> <section> <h2 id="web">Web sites using recent versions of the <code><abbr>tz</abbr></code> database</h2> <p> These are listed roughly in ascending order of complexity and fanciness. </p> <ul> <li><a href="https://time.is">Time.is</a> shows locations’ time and zones.</li> <li><a href="https://www.timejones.com">TimeJones.com</a>, <a href="https://timezoneconverterapp.com">Time Zone Converter</a> and <a href="https://www.worldclock.com">The World Clock</a> are time zone converters.</li> <li><a href="https://timezonedb.com/download">TimeZoneDB Database</a> publishes <code><abbr>tzdb</abbr></code>-derived data in <a href="https://en.wikipedia.org/wiki/Comma-separated_values"><abbr title="comma-separated values">CSV</abbr></a> and in <a href="https://en.wikipedia.org/wiki/SQL"><abbr title="Structured Query Language">SQL</abbr></a> form.</li> <li><a href="https://twiki.org/cgi-bin/xtra/tzdatepick.html">Date and Time Gateway</a> lets you see the <code><abbr>TZ</abbr></code> values directly.</li> <li><a href="https://www.convertit.com/Go/ConvertIt/World_Time/Current_Time.ASP">Current Time in 1000 Places</a> uses descriptions of the values.</li> <li><a href="https://www.timeanddate.com/worldclock/">The World Clock – Worldwide</a> lets you sort zone names and convert times.</li> <li><a href="https://24timezones.com">24TimeZones</a> has a world time map and a time converter.</li> <li><a href="https://www.zeitverschiebung.net/en/">Time Difference</a> calculates the current time difference between locations.</li> <li><a href="https://www.wx-now.com">Weather Now</a> and <a href="https://www.thetimenow.com">The Time Now</a> list the weather too.</li> </ul> </section> <section> <h2 id="protocols">Network protocols for <code><abbr>tz</abbr></code> data</h2> <ul> <li><a href="https://www.rfc-editor.org/rfc/rfc7808">Time Zone Data Distribution Service</a> (TZDIST, Internet <abbr>RFC</abbr> 7808) is associated with <a href="https://www.rfc-editor.org/rfc/rfc7809">CalDAV</a> (Internet <abbr>RFC</abbr> 7809), a calendar access protocol for transferring time zone data by reference. <a href="https://devguide.calconnect.org/Time-Zones/TZDS/">TZDIST implementations</a> are available.</li> <li>The <a href="https://www.rfc-editor.org/rfc/rfc5545">iCalendar format</a> (Internet <abbr>RFC</abbr> 5445) covers time zone data; see its VTIMEZONE calendar component. The iCalendar format requires specialized parsers and generators; a variant <a href="https://www.rfc-editor.org/rfc/rfc6321">xCal</a> (Internet <abbr>RFC</abbr> 6321) uses <a href="https://www.w3.org/XML/"><abbr title="Extensible Markup Language">XML</abbr></a> format, and a variant <a href="https://www.rfc-editor.org/rfc/rfc7265">jCal</a> (Internet <abbr>RFC</abbr> 7265) uses <a href="https://www.json.org/json-en.html"><abbr title="JavaScript Object Notation">JSON</abbr></a> format.</li> </ul> </section> <section> <h2 id="compilers">Other <code><abbr>tz</abbr></code> compilers</h2> <p>Although some of these do not fully support <code><abbr>tz</abbr></code> data, in recent <code><abbr>tzdb</abbr></code> distributions you can generally work around compatibility problems by running the command <code>make rearguard_tarballs</code> and compiling from the resulting tarballs instead.</p> <ul> <li><a href="https://github.com/libical/vzic">Vzic</a> is a <a href="https://en.wikipedia.org/wiki/C_(programming_language)">C</a> program that compiles <code><abbr>tz</abbr></code> source into iCalendar-compatible VTIMEZONE files. Vzic is freely available under the <a href="https://www.gnu.org/copyleft/gpl.html"><abbr>GNU</abbr> General Public License (<abbr title="General Public License">GPL</abbr>)</a>.</li> <li><a href="https://metacpan.org/release/DateTime-TimeZone">DateTime::TimeZone</a> contains a script <code>parse_olson</code> that compiles <code><abbr>tz</abbr></code> source into <a href="https://www.perl.org">Perl</a> modules. It is part of the Perl <a href="https://github.com/houseabsolute/DateTime.pm/wiki">DateTime Project</a>, which is freely available under both the <abbr>GPL</abbr> and the Perl Artistic License. DateTime::TimeZone also contains a script <code>tests_from_zdump</code> that generates test cases for each clock transition in the <code><abbr>tz</abbr></code> database.</li> <li>The <a href="https://howardhinnant.github.io/date/tz.html">Time Zone Database Parser</a> is a <a href="https://en.wikipedia.org/wiki/C++">C++</a> parser and runtime library with a <a href="https://en.cppreference.com/w/cpp/chrono.html"><code>std::chrono</code> API</a> that is a standard part of C++. It is freely available under the <abbr title="Massachusetts Institute of Technology">MIT</abbr> license.</li> <li><a id="ICU" href="https://icu.unicode.org">International Components for Unicode (<abbr>ICU</abbr>)</a> contains C/C++ and <a href="https://en.wikipedia.org/wiki/Java_(programming_language)">Java</a> libraries for internationalization that has a compiler from <code><abbr>tz</abbr></code> source and from <abbr title="Common Locale Data Repository">CLDR</abbr> data (mentioned <a href="#CLDR">below</a>) into an <abbr>ICU</abbr>-specific format. <abbr>ICU</abbr> is freely available under a <abbr>BSD</abbr>-style license.</li> <li>The <a href="https://github.com/lau/tzdata">Tzdata</a> package for the <a href="https://elixir-lang.org">Elixir</a> language downloads and compiles <code><abbr>tz</abbr></code> source and exposes <abbr title="Application Program Interface">API</abbr>s for use. It is freely available under the <abbr>MIT</abbr> license.</li> <li>Java-based compilers and libraries include: <ul> <li>The <a href="https://www.oracle.com/java/technologies/javase/tzupdater-readme.html">TZUpdater tool</a> compiles <code><abbr>tz</abbr></code> source into the format used by <a href="https://openjdk.org">OpenJDK</a> and <a href="https://jdk.java.net">Oracle JDK</a>. Although its source code is proprietary, its executable is available under the <a href="https://www.oracle.com/a/tech/docs/tzupdater-lic.html">Java SE Timezone Updater License Agreement</a>.</li> <li>The <a href="https://www.oracle.com/technical-resources/articles/java/jf14-date-time.html">Java SE 8 Date and Time</a> <abbr>API</abbr> can be supplemented by <a href="https://www.threeten.org/threeten-extra/">ThreeTen-Extra</a>, which is freely available under a <abbr>BSD</abbr>-style license.</li> <li><a href="https://www.joda.org/joda-time/">Joda-Time – Java date and time <abbr>API</abbr></a> contains a class <code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles <code><abbr>tz</abbr></code> source into a binary format. It inspired Java 8 <code>java.time</code>, which its users should migrate to once they can assume Java 8 or later. It is available under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License</a>.</li> <li><a href="https://bell-sw.com/pages/iana-updater/">IANA Updater</a> and <a href="https://www.azul.com/products/components/ziupdater-time-zone-tool/">ZIUpdater</a> are alternatives to TZUpdater. IANA Updater’s license is unclear; ZIUpdater is licensed under the <abbr>GPL</abbr>.</li> <li><a href="https://github.com/MenoData/Time4A">Time4A: Advanced date and time library for Android</a> and <a href="https://github.com/MenoData/Time4J">Time4J: Advanced date, time and interval library for Java</a> compile <code><abbr>tz</abbr></code> source into a binary format. Time4A is available under the Apache License and Time4J is available under the <a href="https://www.gnu.org/copyleft/lesser.html"><abbr>GNU</abbr> Lesser General Public License (<abbr title="Lesser General Public License">LGPL</abbr>)</a>.</li> <li><abbr>ICU</abbr> (mentioned <a href="#ICU">above</a>) contains compilers and Java-based libraries.</li> </ul> <li><a href="https://nodatime.org">Noda Time – Date and time <abbr>API</abbr> for .NET</a> is like Joda-Time and Time4J, but for the .NET framework instead of Java. It is freely available under the Apache License.</li> <li>Many modern <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> runtimes support <code><abbr>tz</abbr></code> natively via the <code>timeZone</code> option of <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat"><code>Intl.DateTimeFormat</code></a>. This can be used as-is or with most of the following libraries, many of which also support runtimes lacking the <code>timeZone</code> option. <ul> <li>The <a href="https://github.com/formatjs/date-time-format-timezone"><code>Intl.DateTimeFormat</code> timezone polyfill</a> is freely available under a <abbr>BSD</abbr>-style license.</li> <li>The <a href="https://date-fns.org">date-fns</a> library manipulates timezone-aware timestamps in browsers and in <a href="https://nodejs.org/en/">Node.js</a>. It is freely available under the <abbr>MIT</abbr> license.</li> <li><a href="https://github.com/iamkun/dayjs">Day.js</a> is a minimalist replacement for the date and time API of the <a href="https://momentjs.com/docs/">now-legacy Moment.js</a> date manipulation library. It is freely available under the <abbr>MIT</abbr> license.</li> <li><a href="https://moment.github.io/luxon/">Luxon</a> improves timezone support for the <code>Intl</code> API. It is freely available under the <abbr>MIT</abbr> license.</li> <li><a href="https://momentjs.com/timezone/">Moment Timezone</a> is a Moment.js plugin. It is freely available under the <abbr>MIT</abbr> license.</li> <li><a href="https://github.com/bigeasy/timezone">Timezone</a> is a JavaScript library that supports date arithmetic that is time zone aware. It is freely available under the <abbr>MIT</abbr> license.</li> <li><a href="https://www.npmjs.com/package/@tubular/time">@tubular/time</a> supports live <code><abbr>tzdb</abbr></code> updates, astronomical and atomic time, a command-line interface, and full <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>. Its companion <a href="https://www.npmjs.com/package/@tubular/time-tzdb">@tubular/time-tzdb</a> can generate <abbr>TZif</abbr> and other files, and a companion website <a href="https://tzexplorer.org">Timezone Database Explorer</a> lets you convert timestamps, view transition histories, and download code and data. It is freely available under the <abbr>MIT</abbr> license.</li> </ul> The proposed <a href="https://github.com/tc39/proposal-temporal"><code>Temporal</code> objects</a> let programs access an abstract view of <code><abbr>tzdb</abbr></code> data, and are designed to replace <a href="https://codeofmatt.com/javascript-date-type-is-horribly-broken/">JavaScript’s problematic <code>Date</code> objects</a> when working with dates and times. <li><a href="https://github.com/JuliaTime">JuliaTime</a> contains a compiler from <code><abbr>tz</abbr></code> source into <a href="https://julialang.org">Julia</a>. It is freely available under the <abbr>MIT</abbr> license.</li> <li><a href="https://github.com/pavkam/tzdb"><abbr>TZDB</abbr> – <abbr>IANA</abbr> Time Zone Database for Delphi/<abbr title="Free Pascal Compiler">FPC</abbr></a> compiles from <code><abbr>tz</abbr></code> source into <a href="https://en.wikipedia.org/wiki/Object_Pascal">Object Pascal</a> as compiled by <a href="https://en.wikipedia.org/wiki/Delphi_(IDE)">Delphi</a> and <a href="https://en.wikipedia.org/wiki/Free_Pascal"><abbr>FPC</abbr></a>. It is freely available under a <abbr>BSD</abbr>-style license.</li> <li><a href="https://pythonhosted.org/pytz/">pytz – World Timezone Definitions for Python</a> compiles <code><abbr>tz</abbr></code> source into <a href="https://www.python.org">Python</a>. It is freely available under a <abbr>BSD</abbr>-style license. In code that can assume Python 3.6 or later it is largely superseded; see <a href="https://blog.ganssle.io/articles/2018/03/pytz-fastest-footgun.html">pytz: The Fastest Footgun in the West</a>.</li> <li><a href="https://tzinfo.github.io">TZInfo – Ruby Timezone Library</a> compiles <code><abbr>tz</abbr></code> source into <a href="https://www.ruby-lang.org/en/">Ruby</a>. It is freely available under the <abbr>MIT</abbr> license.</li> <li>The <a href="https://www.squeaksource.com/Chronos/">Chronos Date/Time Library</a> is a <a href="https://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a> class library that compiles <code><abbr>tz</abbr></code> source into a time zone repository whose format is either proprietary or an <abbr>XML</abbr>-encoded representation.</li> <li><a id="Tcl" href="https://www.tcl-lang.org">Tcl</a> contains a developer-oriented parser that compiles <code><abbr>tz</abbr></code> source into text files, along with a runtime that can read those files. Tcl is freely available under a <abbr>BSD</abbr>-style license.</li> </ul> </section> <section> <h2 id="TZif">Other <abbr>TZif</abbr> readers</h2> <ul> <li>The <a href="https://www.gnu.org/software/libc/"><abbr>GNU</abbr> C Library</a> has an independent, thread-safe implementation of a <abbr>TZif</abbr> file reader. This library is freely available under the LGPL and is widely used in <abbr>GNU</abbr>/Linux systems.</li> <li><a href="https://www.gnome.org">GNOME</a>’s <a href="https://docs.gtk.org/glib/">GLib</a> has a <abbr>TZif</abbr> file reader written in C that creates a <code>GTimeZone</code> object representing sets of <abbr>UT</abbr> offsets. It is freely available under the <abbr>LGPL</abbr>.</li> <li>The <a href="https://github.com/bloomberg/bde/wiki">BDE Standard Library</a>’s <code>baltzo::TimeZoneUtil</code> component contains a C++ implementation of a <abbr>TZif</abbr> file reader. It is freely available under the Apache License.</li> <li><a href="https://github.com/google/cctz">CCTZ</a> is a simple C++ library that translates between <abbr>UT</abbr> and civil time and can read <abbr>TZif</abbr> files. It is freely available under the Apache License.</li> <li>The <a href="https://go.dev">Go programming language</a> has a <abbr>TZif</abbr> file reader <a href="https://pkg.go.dev/time#LoadLocationFromTZData"><code>LoadLocationFromTZData</code></a>.</li> <li>The <a href="https://github.com/nayarsystems/posix_tz_db"><code>posix_tz_db</code> package</a> contains Python code to generate <abbr>CSV</abbr> and <abbr>JSON</abbr> tables that map <code><abbr>tz</abbr></code> settings to proleptic TZ approximations. For example, it maps <code>"Africa/Cairo"</code> to <code>"EET-2EEST,M4.5.5/0,M10.5.4/24"</code>, an approximation valid for Cairo timestamps from 2023 on. This can help porting to platforms that support only proleptic TZ. The package is freely available under the MIT license.</li> <li><a href="https://github.com/derickr/timelib">Timelib</a> is a C library that reads <abbr>TZif</abbr> files and converts timestamps from one time zone or format to another. It is used by <a href="https://www.php.net"><abbr title="PHP: Hypertext Preprocessor">PHP</abbr></a>, <a href="https://hhvm.com"><abbr title="HipHop Virtual Machine">HHVM</abbr></a>, and <a href="https://www.mongodb.com">MongoDB</a>. It is freely available under the <abbr>MIT</abbr> license.</li> <li>Tcl, mentioned <a href="#Tcl">above</a>, also contains a <abbr>TZif</abbr> file reader.</li> <li><a href="https://metacpan.org/pod/DateTime::TimeZone::Tzfile"> DateTime::TimeZone::Tzfile</a> is a <abbr>TZif</abbr> file reader written in Perl. It is freely available under the same terms as Perl (dual <abbr>GPL</abbr> and Artistic license).</li> <li>Python has a <a id="python-zoneinfo" href="https://docs.python.org/3/library/zoneinfo.html"><code>zoneinfo.ZoneInfo</code> class</a> that reads <abbr>TZif</abbr> data and creates objects that represent <code><abbr>tzdb</abbr></code> timezones. Python is freely available under the <a href="https://docs.python.org/3/license.html">Python Software Foundation License</a>. A companion <a id="pypi-tzdata" href="https://pypi.org">PyPI</a> module <a href="https://pypi.org/project/tzdata/"><code>tzdata</code></a> supplies TZif data if the underlying system data cannot be found; it is freely available under the Apache License.</li> <li>The public-domain <a href="https://github.com/dbaron/tz.js">tz.js</a> library contains a Python tool that converts <abbr>TZif</abbr> data into <abbr>JSON</abbr>-format data suitable for use in its JavaScript library for time zone conversion. Dates before 1970 are not supported.</li> <li>The <a href="https://hackage.haskell.org/package/timezone-olson">timezone-olson</a> package contains <a href="https://www.haskell.org">Haskell</a> code that parses and uses <abbr>TZif</abbr> data. It is freely available under a <abbr>BSD</abbr>-style license.</li> </ul> </section> <section> <h2 id="software">Other <code><abbr>tz</abbr></code>-based time zone software</h2> <ul> <li><a href="https://foxclocks.org">FoxClocks</a> is an extension for <a href="https://www.google.com/chrome/">Google Chrome</a>, <a href="https://www.firefox.com/en-US/">Firefox</a> and <a href="https://www.thunderbird.net/en-US/">Thunderbird</a>. It displays multiple clocks in the application window, and has a mapping interface to <a href="https://earth.google.com/web/">Google Earth</a>. It is freely available under the <abbr>GPL</abbr>.</li> <li>Microsoft Windows 8.1 and later has <code><abbr>tz</abbr></code> data and <abbr>CLDR</abbr> data (mentioned <a href="#CLDR">below</a>) used by the <a href="https://en.wikipedia.org/wiki/Windows_Runtime">Windows Runtime</a> / <a href="https://en.wikipedia.org/wiki/Universal_Windows_Platform">Universal Windows Platform</a> classes <a href="https://learn.microsoft.com/en-us/uwp/api/Windows.Globalization.DateTimeFormatting.DateTimeFormatter"><code>DateTimeFormatter</code></a> and <a href="https://learn.microsoft.com/en-us/uwp/api/windows.globalization.calendar"><code>Calendar</code></a>. <a id="System.TimeZoneInfo" href="https://learn.microsoft.com/en-us/archive/blogs/bclteam/exploring-windows-time-zones-with-system-timezoneinfo-josh-free">Exploring Windows Time Zones with <code>System.TimeZoneInfo</code></a> describes the older, proprietary method of Microsoft Windows 2000 and later, which stores time zone data in the <a href="https://en.wikipedia.org/wiki/Windows_Registry">Windows Registry</a>. The <a href="https://unicode.org/cldr/charts/latest/supplemental/zone_tzid.html">Zone → Tzid table</a> or <a href="https://github.com/unicode-org/cldr/blob/main/common/supplemental/windowsZones.xml"><abbr>XML</abbr> file</a> of the <abbr>CLDR</abbr> data maps proprietary zone IDs to <code><abbr>tz</abbr></code> names. These mappings can be performed programmatically via the <a href="https://github.com/mattjohnsonpint/TimeZoneConverter">TimeZoneConverter</a> .NET library, or the ICU Java and C++ libraries mentioned <a href="#ICU">above</a>. <li><a href="https://www.oracle.com/java/">Oracle Java</a> contains a copy of a subset of a recent <code><abbr>tz</abbr></code> database in a Java-specific format.</li> </ul> </section> <section> <h2 id="other-dbs">Other time zone databases</h2> <ul> <li><a href="https://www.astro.com/atlas">Time-zone Atlas</a> is Astrodienst’s Web version of Shanks and Pottenger’s out-of-print time zone history atlases <a href="https://search.worldcat.org/title/468828649">for the US</a> and <a href="https://search.worldcat.org/title/76950459">for the world</a>. Although these extensive atlases <a href="https://astrologynewsservice.com/opinion/how-astrologers-contributed-to-the-information-age-a-brief-history-of-time/">were sources for much of the older <code><abbr>tz</abbr></code> data</a>, they are unreliable as Shanks appears to have guessed many <abbr>UT</abbr> offsets and transitions. The atlases cite no sources and do not indicate which entries are guesswork.</li> <li><a href="https://en.wikipedia.org/wiki/HP-UX">HP-UX</a> has a database in its own <code>tztab</code>(4) format.</li> <li>Microsoft Windows has proprietary data mentioned <a href="#System.TimeZoneInfo">above</a>.</li> <li><a href="https://www.worldtimeserver.com">World Time Server</a> is another time zone database.</li> <li>The <a href="https://www.iata.org/en/publications/manuals/standard-schedules-information">Standard Schedules Information Manual</a> of the International Air Transport Association gives current time zone rules for airports served by commercial aviation.</li> </ul> </section> <section> <h2 id="maps">Maps</h2> <ul> <li><a href="https://www.worldtimezone.com">World Time Zone Map with current time</a> has several fancy time zone maps; it covers Russia particularly well.</li> <li><a href="https://blog.poormansmath.net/how-much-is-time-wrong-around-the-world/">How much is time wrong around the world?</a> maps the difference between mean solar and standard time, highlighting areas such as western China where the two differ greatly. It’s a bit out of date, unfortunately.</li> <li>The <a href="https://maps.lib.utexas.edu/maps/world.html">Perry–Castañeda Library Map Collection</a> of the University of Texas at Austin has copies of old maps taken from <a href="https://en.wikipedia.org/wiki/The_World_Factbook"><em>The World Factbook</em></a>, formerly published by the <a href="https://www.cia.gov">US Central Intelligence Agency</a>. Although the maps’ pictorial quality is good, the maps do not indicate daylight saving time.</li> </ul> </section> <section> <h2 id="boundaries">Time zone boundaries</h2> <p>Geographical boundaries between timezones are available from several <a href="https://en.wikipedia.org/wiki/Internet_geolocation">Internet geolocation</a> services and other sources.</p> <ul> <li><a href="https://github.com/evansiroky/timezone-boundary-builder">Timezone Boundary Builder</a> extracts <a href="https://www.openstreetmap.org">Open Street Map</a> data to build boundaries of <code><abbr>tzdb</abbr></code> timezones. Its code is freely available under the <abbr>MIT</abbr> license, and its data entries are freely available under the <a href="https://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a>. The borders appear to be quite accurate. Its main web page lists more than twenty libraries for looking up a timezone name from a GPS coordinate.</li> <li>Free access via a network API, if you register a key, is provided by the <a href="https://www.geonames.org/export/web-services.html#timezone">GeoNames Timezone web service</a>, the <a href="https://developers.google.com/maps/documentation/timezone/overview">Google Maps Time Zone API</a>, and the <a href="https://timezonedb.com/api">TimeZoneDB API</a>. Commercial network API access is provided by <a href="https://askgeo.com">AskGeo</a> and <a href="https://www.geogarage.com/blog/news-1/post/geogarage-time-zone-api-31">GeoGarage</a>. </li> <li>“<a href="https://stackoverflow.com/questions/16086962/how-to-get-a-time-zone-from-a-location-using-latitude-and-longitude-coordinates/16086964">How to get a time zone from a location using latitude and longitude coordinates?</a>” discusses other geolocation possibilities.</li> <li><a href="https://statoids.com/statoids.html">Administrative Divisions of Countries (“Statoids”)</a> lists political subdivision data related to time zones.</li> <li><a href="https://manifold.net/info/freestuff.shtml">Manifold Software – GIS and Database Tools</a> includes a Manifold-format map of world time zone boundaries circa 2007, distributed under the <abbr>GPL</abbr>.</li> <li>A ship within the <a href="https://en.wikipedia.org/wiki/Territorial_waters">territorial waters</a> of any nation uses that nation’s time. In international waters, time zone boundaries are meridians 15° apart, except that <abbr>UT</abbr>−12 and <abbr>UT</abbr>+12 are each 7.5° wide and are separated by the 180° meridian (not by the International Date Line, which is for land and territorial waters only). A captain can change ship’s clocks any time after entering a new time zone; midnight changes are common.</li> </ul> </section> <section> <h2 id="civil">Civil time concepts and history</h2> <ul> <li><a href="https://www.nist.gov/pml/time-and-frequency-division/popular-links/walk-through-time">A Walk through Time</a> surveys the evolution of timekeeping.</li> <li>The history of daylight saving time is surveyed in <a href="https://www.webexhibits.org/daylightsaving/">About Daylight Saving Time – History, rationale, laws & dates</a> and summarized in <a href="http://seizethedaylight.com/dst/">A Brief History of Daylight Saving Time</a>.</li> <li><a href="https://www.laphamsquarterly.org/roundtable/time-lords">Time Lords</a> discusses how authoritarians manipulate civil time.</li> <li><a href="https://www.w3.org/TR/timezone/">Working with Time and Time Zones</a> contains guidelines and best practices for software applications that deal with civil time.</li> <li><a href="https://webspace.science.uu.nl/~gent0113/idl/idl.htm">A History of the International Date Line</a> tells the story of the most important time zone boundary.</li> <li><a href="https://statoids.com/tconcept.html">Basic Time Zone Concepts</a> discusses terminological issues behind time zones.</li> </ul> </section> <section> <h2 id="national">National histories of legal time</h2> <dl> <dt>Australia</dt> <dd>The Bureau of Meteorology publishes a list of <a href="http://www.bom.gov.au/climate/averages/tables/dst_times.shtml">Implementation Dates of Daylight Savings Time within Australia</a>.</dd> <dt>Belgium</dt> <dd>The Royal Observatory of Belgium maintains a table of time in Belgium (in <a href="https://robinfo.oma.be/nl/astro-info/tijd/" hreflang="nl">Dutch</a> and <a href="https://robinfo.oma.be/fr/astro-info/heure/" hreflang="fr">French</a>).</dd> <dt>Brazil</dt> <dd>The Time Service Department of the National Observatory records <a href="http://pcdsh01.on.br/DecHV.html" hreflang="pt-BR">Brazil’s daylight saving time decrees (in Portuguese)</a>.</dd> <dt>Canada</dt> <dd>National Research Council Canada publishes current and some older information about <a href="https://nrc.canada.ca/en/certifications-evaluations-standards/canadas-official-time/time-zones-daylight-saving-time">time zones and daylight saving time</a>.</dd> <dt>Chile</dt> <dd>The Hydrographic and Oceanographic Service of the Chilean Navy publishes a <a href="https://www.horaoficial.cl/historia_hora.php" hreflang="es">history of Chile’s official time (in Spanish)</a>.</dd> <dt>China</dt> <dd>The Hong Kong Observatory maintains a <a href="https://www.hko.gov.hk/en/gts/time/Summertime.htm">history of summer time in Hong Kong</a>, and Macau’s Meteorological and Geophysical Bureau maintains a <a href="https://www.smg.gov.mo/en/subpage/224/page/174">similar history for Macau</a>. Unfortunately the latter is incomplete and has errors.</dd> <dt>Czech Republic</dt> <dd><a href="https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas" hreflang="cs">When daylight saving time starts and ends (in Czech)</a> summarizes and cites historical <abbr>DST</abbr> regulations.</dd> <dt>Germany</dt> <dd>The National Institute for Science and Technology maintains the <a href="https://www.ptb.de/cms/en/ptb/fachabteilungen/abt4/fb-44/ag-441/realisation-of-legal-time-in-germany.html">Realisation of Legal Time in Germany</a>.</dd> <dt>Israel</dt> <dd><a href="https://tz.cs.huji.ac.il">Israel Timezone Files</a> lists official time-change announcements and laws since 1940, almost all in Hebrew.</dd> <dt>Malaysia</dt> <dd>See Singapore <a href="#Singapore">below</a>.</dd> <dt>Mexico</dt> <dd>The Investigation and Analysis Service of the Mexican Library of Congress has published a <a href="https://www.diputados.gob.mx/bibliot/publica/inveyana/polisoc/horver/index.htm" hreflang="es">history of Mexican local time (in Spanish)</a>.</dd> <dt>Netherlands</dt> <dd><a href="https://webspace.science.uu.nl/~gent0113/wettijd/wettijd.htm" hreflang="nl">Legal time in the Netherlands (in Dutch)</a> covers the history of local time in the Netherlands from ancient times.</dd> <dt>New Zealand</dt> <dd>The Department of Internal Affairs maintains a brief <a href="https://www.govt.nz/browse/recreation-and-the-environment/daylight-saving/history-of-daylight-saving-in-nz/">History of Daylight Saving in NZ</a>.</dd> <dt>Palestine</dt> <dd>The Ministry of Telecom and Digital Economy publishes a <a href="https://mtde.gov.ps/home/TimeZone" hreflang="ar">history of clock changes (in Arabic)</a>.</dd> <dt>Portugal</dt> <dd>The Lisbon Astronomical Observatory publishes a <a href="https://oal.ul.pt/hora-legal/" hreflang="pt">history of legal time (in Portuguese)</a>.</dd> <dt>Singapore</dt> <dd><a id="Singapore" href="https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html">Why is Singapore in the “Wrong” Time Zone?</a> details the history of legal time in Singapore and Malaysia.</dd> <dt>United Kingdom</dt> <dd><a href="https://www.polyomino.org.uk/british-time/">History of legal time in Britain</a> discusses in detail the country with perhaps the best-documented history of clock adjustments.</dd> <dt>United States</dt> <dd>The Department of Transportation’s <a href="https://www.transportation.gov/regulations/recent-time-zone-proceedings">Recent Time Zone Proceedings</a> lists changes to official written time zone boundaries, and its <a href="https://geodata.bts.gov/datasets/usdot::time-zones/about">Time Zones dataset</a> maps current boundaries. These boundaries are only for standard time, so the current map puts all of Arizona in one time zone even though part of Arizona observes <abbr>DST</abbr> and part does not.</dd> <dt>Uruguay</dt> <dd>The Oceanography, Hydrography, and Meteorology Service of the Uruguayan Navy (SOHMA) publishes an annual <a href="https://sohma.armada.mil.uy/index.php/servicios/datos-astronomicos" hreflang="es">almanac (in Spanish)</a>.</dd> </dl> </section> <section> <h2 id="costs">Costs and benefits of time shifts</h2> <p>Various sources argue for and against daylight saving time and time zone shifts, and many scientific studies have been conducted. This section summarizes reviews and position statements based on scientific literature in the area.</p> <ul> <li>Carey RN, Sarma KM. <a href="https://bmjopen.bmj.com/content/7/6/e014319.long">Impact of daylight saving time on road traffic collision risk: a systematic review</a>. <em>BMJ Open.</em> 2017;7(6):e014319. doi:<a href="https://doi.org/10.1136/bmjopen-2016-014319">10.1136/bmjopen-2016-014319</a>. This reviews research literature and concludes that the evidence neither supports nor refutes road safety benefits from shifts in time zones.</li> <li>Havranek T, Herman D, Irsova D. Does daylight saving save electricity? A meta-analysis. <em>Energy J.</em> 2018;39(2):35–61. doi:<a href="https://doi.org/10.5547/01956574.39.2.thav">10.5547/01956574.39.2.thav</a>. This analyzes research literature and concludes, “Electricity savings are larger for countries farther away from the equator, while subtropical regions consume more electricity because of <abbr>DST</abbr>.”</li> <li>Neumann P, von Blanckenburg K. <a href="https://journals.sagepub.com/doi/full/10.1177/0961463X241310562">What time will it be? A comprehensive literature review on daylight saving time</a>. <em>Time Soc</em>. 2025;34(4):684–745. doi:<a href="https://doi.org/10.1177/0961463X241310562">10.1177/0961463X241310562</a>. This reviews <abbr>DST</abbr>’s effects on electricity, health, crime, road safety, and the economy, focusing on research since 2010, and concludes that year-round standard time is preferable overall.</li> <li>Romigi A, Franco V, Scoditti E <em>et al</em>. The effects of daylight saving time and clock time transitions on sleep and sleepiness: a systematic review. <em>Sleep Med Rev.</em> 2025;84:102161. doi:<a href="https://doi.org/10.1016/j.smrv.2025.102161">10.1016/j.smrv.2025.102161</a>. This reviews <abbr>DST</abbr> and <abbr>DST</abbr> transitions, and concludes that they both harm sleep, health and behavior.</li> </ul> <p>The following medical societies have taken positions on the advisability of clock shifts:</p> <ul> <li>In 2022 the American Medical Association issued a <a href="https://www.ama-assn.org/press-center/ama-press-releases/ama-calls-permanent-standard-time">statement supporting permanent standard time</a> on health grounds.</li> <li>Crawford MR, Winnebeck EC, von Schantz M <em>et al</em>. <a href="https://onlinelibrary.wiley.com/doi/10.1111/jsr.14352">The British Sleep Society position statement on Daylight Saving Time in the UK</a>. <em>J Sleep Res.</em> 2025;34(3):e14352. doi:<a href="https://doi.org/10.1111/jsr.14352">10.1111/jsr.14352</a>. This recommends that the UK abolish <abbr>DST</abbr> for health reasons.</li> <li>Malow BA. <a href="https://academic.oup.com/sleep/article/45/12/zsac236/6717940">It is time to abolish the clock change and adopt permanent standard time in the United States: a Sleep Research Society position statement</a>. <em>Sleep.</em> 2022;45(12):zsac236. doi:<a href="https://doi.org/10.1093/sleep/zsac236">10.1093/sleep/zsac236</a>. The Sleep Research Society advocates permanent standard time due to its health benefits.</li> <li>Rishi MA, Cheng JY, Strang AR <em>et al</em>. <a href="https://jcsm.aasm.org/doi/10.5664/jcsm.10898">Permanent standard time is the optimal choice for health and safety: an American Academy of Sleep Medicine position statement</a>. <em>J Clin Sleep Med.</em> 2024;20(1):121–125. doi:<a href="https://doi.org/10.5664/jcsm.10898">10.5664/jcsm.10898</a>. The AASM argues for permanent standard time due to health and safety risks and economic costs of both <abbr>DST</abbr> transitions and permanent <abbr>DST</abbr>.</li> <li>Roenneberg T, Wirz-Justice A, Skene DJ <em>et al</em>. <a href="https://journals.sagepub.com/doi/10.1177/0748730419854197">Why should we abolish Daylight Saving Time?</a> <em>J Biol Rhythms.</em> 2019;34(3):227–230. doi:<a href="https://doi.org/10.1177/0748730419854197">10.1177/0748730419854197</a>. The Society for Research on Biological Rhythms opposes <abbr>DST</abbr> changes and permanent <abbr>DST</abbr>, and advocates that governments adopt “permanent Standard Time for the health and safety of their citizens”.</li> </ul> </section> <section> <h2 id="precision">Precision timekeeping</h2> <ul> <li><a href="http://leapsecond.com/hpan/an1289.pdf">The Science of Timekeeping</a> is a thorough introduction to the theory and practice of precision timekeeping.</li> <li><a href="https://doi.org/10.1007/978-3-319-59909-0">The Science of Time 2016</a> contains several freely readable papers.</li> <li><a href="https://www.ntp.org"><abbr title="Network Time Protocol">NTP</abbr>: The Network Time Protocol</a> (Internet <abbr>RFC</abbr> 5905) discusses how to synchronize clocks of Internet hosts.</li> <li>The <a href="https://www.usenix.org/system/files/conference/nsdi18/nsdi18-geng.pdf"><span style="font-variant: small-caps">Huygens</span></a> family of software algorithms can achieve accuracy to a few tens of nanoseconds in scalable server farms without special hardware.</li> <li>The <a href="https://www.nist.gov/el/intelligent-systems-division-73500/ieee-1588">Precision Time Protocol</a> (<abbr title="Institute of Electrical and Electronics Engineers">IEEE</abbr> 1588) can achieve submicrosecond clock accuracy on a local area network with special-purpose hardware.</li> <li><a href="https://www.rfc-editor.org/rfc/rfc4833">Timezone Options for <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr></a> (Internet <abbr>RFC</abbr> 4833) specifies a <a href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol"><abbr>DHCP</abbr></a> option for a server to configure a client’s time zone and daylight saving settings automatically.</li> <li><a href="https://www.ucolick.org/~sla/leapsecs/timescales.html">Time Scales</a> describes astronomical time scales like <abbr title="Terrestrial Dynamic Time">TDT</abbr>, <abbr title="Geocentric Coordinate Time">TCG</abbr>, and <abbr title="Barycentric Dynamic Time">TDB</abbr>. <li>The <a href="https://www.iau.org"><abbr title="International Astronomical Union">IAU</abbr></a>’s <a href="https://www.iausofa.org"><abbr title="Standards Of Fundamental Astronomy">SOFA</abbr></a> collection contains C and <a href="https://en.wikipedia.org/wiki/Fortran">Fortran</a> code for converting among time scales like <abbr title="International Atomic Time">TAI</abbr>, <abbr>TDB</abbr>, <abbr>TDT</abbr> and <abbr>UTC</abbr>. It is freely available under the <a href="https://www.iausofa.org/terms-and-conditions">SOFA license</a>.</li> <li><a href="https://www.giss.nasa.gov/tools/mars24/help/notes.html">Mars24 Sunclock – Time on Mars</a> describes Airy Mean Time (<abbr>AMT</abbr>) and the diverse local time scales used by each landed mission on Mars.</li> <li><a href="http://leapsecond.com">LeapSecond.com</a> is dedicated not only to leap seconds but to precise time and frequency in general. It covers the state of the art in amateur timekeeping, and how the art has progressed over the past few decades.</li> <li>The rules for leap seconds are specified in Annex 1 (Time scales) of <a href="https://www.itu.int/rec/R-REC-TF.460-6-200202-I/">Standard-frequency and time-signal emissions</a>, International Telecommunication Union – Radiocommunication Sector (ITU-R) Recommendation TF.460-6 (02/2002).</li> <li><a href="https://www.iers.org/IERS/EN/Publications/Bulletins/bulletins.html"><abbr title="International Earth Rotation and Reference Systems Service">IERS</abbr> Bulletins</a> contains official publications of the International Earth Rotation and Reference Systems Service, which decides when leap seconds occur. The <code><abbr>tz</abbr></code> code and data support leap seconds via an optional <code>"right"</code> configuration where a computer’s internal <code>time_t</code> integer clock counts every <abbr>TAI</abbr> second, as opposed to the default <code>"posix"</code> configuration where the internal clock ignores leap seconds. The two configurations agree for timestamps starting with 1972-01-01 00:00:00 <abbr>UTC</abbr> (<code>time_t</code> 63 072 000) and diverge for timestamps starting with <code>time_t</code> 78 796 800, which corresponds to the first leap second 1972-06-30 23:59:60 <abbr>UTC</abbr> in the <code>"right"</code> configuration, and to 1972-07-01 00:00:00 <abbr>UTC</abbr> in the <code>"posix"</code> configuration. In practice the two configurations also agree for timestamps before 1972 even though the historical situation is messy, partly because neither <abbr>UTC</abbr> nor <abbr>TAI</abbr> is well-defined for sufficiently old timestamps.</li> <li><a href="https://kb.meinbergglobal.com/kb/time_sync/ntp/configuration/ntp_leap_second_file">The <abbr>NTP</abbr> Leap Second File</a> covers the text file <code>leap-seconds.list</code>, which lists the currently known leap seconds. The <abbr>IERS</abbr> maintains this file, and a copy is distributed by <code><abbr>tzdb</abbr></code> for use by <abbr>NTP</abbr> implementations like <a href="https://www.ntp.org">classic <code><abbr title="Network Time Protocol Daemon">ntpd</abbr></code></a> and <a href="https://ntpsec.org">NTPsec</a>. The <code><abbr>tz</abbr></code> database also distributes leap second information in a differently-formatted <code>leapseconds</code> text file, as well as in the <code>"right"</code> configuration in binary form; for example, <code>right/UTC</code> can be used by <a href="https://chrony-project.org"><code>chrony</code></a>, another <abbr>NTP</abbr> implementation.</li> <li><a href="https://developers.google.com/time/smear">Leap Smear</a> discusses how to gradually adjust <abbr>POSIX</abbr> clocks near a leap second so that they disagree with <abbr>UTC</abbr> by at most a half second, even though every <abbr>POSIX</abbr> minute has exactly sixty seconds. This approach works with the default <code><abbr>tz</abbr></code> <code>"posix"</code> configuration, is <a href="https://gitlab.com/NTPsec/ntpsec/-/blob/master/docs/leapsmear.adoc">supported</a> by the abovementioned <abbr>NTP</abbr> implementations, <a href="https://github.com/google/unsmear">supports</a> conversion between <abbr>UTC</abbr> and smeared <abbr>POSIX</abbr> timestamps, and is used by major cloud service providers. However, according to <a href="https://www.rfc-editor.org/rfc/rfc8633#section-3.7.1">§3.7.1 of Network Time Protocol Best Current Practices</a> (Internet <abbr>RFC</abbr> 8633), leap smearing is not suitable for applications requiring accurate <abbr>UTC</abbr> or civil time, and is intended for use only in single, well-controlled environments.</li> <li>The <a href="https://pairlist6.pair.net/mailman/listinfo/leapsecs">Leap Second Discussion List</a> covers <a href="https://gge.ext.unb.ca/Resources/gpsworld.november99.pdf">McCarthy and Klepczynski’s 1999 proposal to discontinue leap seconds</a>, discussed further in <a href="https://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf">The leap second: its history and possible future</a>. <a href="https://www.ucolick.org/~sla/leapsecs/"><abbr>UTC</abbr> might be redefined without Leap Seconds</a> gives pointers on this contentious issue. The General Conference on Weights and Measures <a href="https://www.bipm.org/en/cgpm-2022/resolution-4">decided in 2022</a> to discontinue the use of leap seconds by 2035, and requested that no discontinuous adjustments be made to UTC for at least a century. The World Radiocommunication Conference <a href="https://www.itu.int/dms_pub/itu-r/opb/act/R-ACT-WRC.15-2023-PDF-E.pdf">resolved in 2023</a> to cooperate with this process. One proposal to implement this would replace leap seconds with seven 13-second leap smears occurring once per decade until 2100, with leap smears after that gradually increasing in size. See: <ul> <li>Levine J. <a href="https://www.preprints.org/manuscript/202406.0043">A proposal to change the leap-second adjustments to coordinated universal time</a>. <em>Metrologia.</em> 2024;61(5):055002. doi:<a href="https://doi.org/10.1088/1681-7575/ad6266">10.1088/1681-7575/ad6266</a>.</li> </ul> However, there is still no consensus on whether this is the best way to replace leap seconds. </li> </ul> </section> <section> <h2 id="notation">Time notation</h2> <ul> <li>The <a id="CLDR" href="https://cldr.unicode.org">Unicode Common Locale Data Repository (<abbr>CLDR</abbr>) Project</a> has localizations for time zone names, abbreviations, identifiers, and formats. For example, it contains French translations for “Eastern European Summer Time”, “<abbr title="Eastern European Summer Time">EEST</abbr>”, and “Bucharest”. Its <a href="https://unicode.org/cldr/charts/latest/by_type/">by-type charts</a> show these values for many locales. Data values are available in both <abbr title="Locale Data Markup Language">LDML</abbr> (an <abbr>XML</abbr> format) and <abbr>JSON</abbr>. <li> <a href="https://www.cl.cam.ac.uk/~mgk25/iso-time.html">A summary of the international standard date and time notation</a> covers <a href="https://www.iso.org/standard/70907.html"><em><abbr title="International Organization for Standardization">ISO</abbr> 8601-1:2019 – Date and time – Representations for information interchange – Part 1: Basic rules</em></a>.</li> <li> <a href="https://www.w3.org/TR/xmlschema/#dateTime"><abbr>XML</abbr> Schema: Datatypes – dateTime</a> specifies a format inspired by <abbr>ISO</abbr> 8601 that is in common use in <abbr>XML</abbr> data.</li> <li><a href="https://www.rfc-editor.org/rfc/rfc5322#section-3.3">§3.3 of Internet Message Format</a> (Internet <abbr>RFC</abbr> 5322) specifies the time notation used in email and <a href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"><abbr>HTTP</abbr></a> headers.</li> <li> <a href="https://www.rfc-editor.org/rfc/rfc3339">Date and Time on the Internet: Timestamps</a> (Internet <abbr>RFC</abbr> 3339) specifies an <abbr>ISO</abbr> 8601 profile for use in new Internet protocols. An extension, <a href="https://www.rfc-editor.org/rfc/rfc9557">Date and Time on the Internet: Timestamps with Additional Information</a> (Internet <abbr>RFC</abbr> 9557) extends this profile to let you specify the <code><abbr>tzdb</abbr></code> timezone of a timestamp via suffixes like <code>[Asia/Tokyo]</code>. <li> <a href="https://web.archive.org/web/20190130042457/https://www.hackcraft.net/web/datetime/">Date & Time Formats on the Web</a> surveys web- and Internet-oriented date and time formats.</li> <li>Alphabetic time zone abbreviations should not be used as unique identifiers for <abbr>UT</abbr> offsets as they are ambiguous in practice. For example, in English-speaking North America “<abbr>CST</abbr>” denotes 6 hours behind <abbr>UT</abbr>, but in China it denotes 8 hours ahead of <abbr>UT</abbr>, and French-speaking North Americans prefer “<abbr title="Heure Normale du Centre">HNC</abbr>” to “<abbr>CST</abbr>”. The <code><abbr>tz</abbr></code> database contains English abbreviations for many timestamps; unfortunately some of these abbreviations were merely the database maintainers’ inventions, and these have been removed when possible.</li> <li>Numeric time zone abbreviations typically count hours east of <abbr>UT</abbr>, e.g., +09 for Japan and −10 for Hawaii. However, <abbr>POSIX</abbr> proleptic <code><abbr>TZ</abbr></code> settings use the opposite convention. For example, one might use <code><abbr>TZ</abbr>="<abbr title="Japan Standard Time">JST</abbr>-9"</code> and <code><abbr>TZ</abbr>="<abbr title="Hawaii Standard Time">HST</abbr>10"</code> for Japan and Hawaii, respectively. If the <code><abbr>tz</abbr></code> database is available, it is usually better to use settings like <code><abbr>TZ</abbr>="Asia/Tokyo"</code> and <code><abbr>TZ</abbr>="Pacific/Honolulu"</code> instead, as this should avoid confusion, handle old timestamps better, and insulate you better from any future changes to the rules. One should never set <abbr>POSIX</abbr> <code><abbr>TZ</abbr></code> to a value like <code>"GMT-9"</code>, though, since this would incorrectly imply that local time is nine hours ahead of <abbr>UT</abbr> and the time zone is called “<abbr>GMT</abbr>”.</li> </ul> </section> <section> <h2 id="see-also">See also</h2> <ul> <li><a href="theory.html">Theory and pragmatics of the <code><abbr>tz</abbr></code> code and data</a></li> <li><a href="tz-art.html">Time and the Arts</a></li> </ul> </section> <footer> <hr> This web page is in the public domain, so clarified as of 2009-05-17 by Arthur David Olson. <br> Please send corrections to this web page to the <a href="mailto:tz@iana.org">time zone mailing list</a>. The mailing list and its archives are public, so please do not send confidential information. </footer> </body> </html> NEWS000064400000747631151706426130005272 0ustar00News for the tz database Release 2026a - 2026-03-01 22:59:49 -0800 Briefly: Moldova has used EU transition times since 2022. The "right" TZif files are no longer installed by default. -DTZ_RUNTIME_LEAPS=0 disables runtime support for leap seconds. TZif files are no longer limited to 50 bytes of abbreviations. zic is no longer limited to 50 leap seconds. Several integer overflow bugs have been fixed. Changes to past and future timestamps Since 2022 Moldova has observed EU transition times, that is, it has sprung forward at 03:00, not 02:00, and has fallen back at 04:00, not 03:00. (Thanks to Heitor David Pinto.) Changes to data Remove Europe/Chisinau from zonenow.tab, as it now agrees with Europe/Athens for future timestamps. Changes to build procedure The Makefile no longer by default installs an alternate set of TZif files for system clocks that count leap seconds. Install with 'make REDO=posix_right' to get the old default, which is rarely used in major downstream distributions. If your system clock counts leap seconds (contrary to POSIX), it is better to install with 'make REDO=right_only'. This change does not affect the leapseconds file, which is still installed as before. The Makefile's POSIXRULES option, which was declared obsolete in release 2019b, has been removed. The Makefile's build procedure thus no longer optionally installs the obsolete posixrules file. Changes to code Compiling with the new option -DTZ_RUNTIME_LEAPS=0 disables runtime support for leap seconds. Although this conforms to POSIX, shrinks tzcode's attack surface, and is more efficient, it fails to support Internet RFC 9636's leap seconds. zic now can generate, and localtime.c can now use, TZif files that hold up to 256 bytes of abbreviations, counting trailing NULs. The previous limit was 50 bytes, and some tzdata TZif files were already consuming 40 bytes. zic -v warns if it generates a file that exceeds the old 50-byte limit. zic -L can now generate TZif files with more than 50 leap seconds. This helps test TZif readers not limited to 50 leap seconds, as tzcode's localtime.c is; it has little immediate need for practical timekeeping as there have been only 27 leap seconds and possibly there will be no more, due to planned changes to UTC. zic -v warns if its output exceeds the old 50-second limit. localtime.c no longer accesses the posixrules file generated by zic -p. Hence for obsolete and nonconforming settings like TZ="AST4ADT" it now typically falls back on US DST rules, rather than attempting to override this fallback with the contents of the posixrules file. This removes library support that was declared obsolete in release 2019b, and fixes some undefined behavior. (Undefined behavior reported by GitHub user Naveed8951.) The posix2time, posix2time_z, time2posix, and time2posix_z functions now set errno=EOVERFLOW and return ((time_t) -1) if the result is not representable. Formerly they had undefined behavior that could in practice result in crashing, looping indefinitely, or returning an incorrect result. As before, these functions are defined only when localtime.c is compiled with the -DSTD_INSPIRED option. Some other undefined behavior, triggered by TZif files containing outlandish but conforming UT offsets or leap second corrections, has also been fixed. (Some of these bugs reported by Naveed8951.) localtime.c no longer rejects TZif files that exactly fit in its internal structures, fixing off-by-one typos introduced in 2014g. zic no longer generates a no-op transition when simultaneous Rule and Zone changes cancel each other out. This occurs in tzdata only in Asia/Tbilisi on 1997-03-30. (Thanks to Renchunhui for a test case showing the bug.) zic no longer assumes you can fflush a read-only stream. (Problem reported by Christos Zoulas.) zic no longer generates UT offsets equal to -2**31 and localtime.c no longer accepts them, as they can cause trouble in both localtime.c and its callers. RFC 9636 prohibits such offsets. zic -p now warns that the -p option is obsolete and likely ineffective. Release 2025c - 2025-12-10 14:42:37 -0800 Briefly: Several code changes for compatibility with FreeBSD. Changes to past timestamps Baja California agreed with California’s DST rules in 1953 and in 1961 through 1975, instead of observing standard time all year. (Thanks to Alois Treindl.) Changes to build procedure Files in distributed tarballs now have correct commit times. Formerly, the committer’s time zone was incorrectly ignored. Distribution products (*.asc, *.gz, and *.lz) now have reproducible timestamps. Formerly, only the contents of the compressed tarballs had reproducible timestamps. By default, distributed formatted man pages (*.txt) now use UTF-8 and are left-adjusted more consistently. A new Makefile macro MANFLAGS can override these defaults. (Thanks to G. Branden Robinson for inspiring these changes.) Changes to code An unset TZ is no longer invalid when /etc/localtime is missing, and is abbreviated "UTC" not "-00". This reverts to 2024b behavior. (Problem and patch reported by Dag-Erling Smørgrav.) New function offtime_r, short for fixed-offset localtime_rz. It is defined if STD_INSPIRED is defined. (Patch from Dag-Erling Smørgrav.) tzset etc. are now more cautious about questionable TZ settings. Privileged programs now reject TZ settings that start with '/', unless they are TZDEFAULT (default "/etc/localtime") or start with TZDIR then '/' (default "/usr/share/zoneinfo/"). Unprivileged programs now require files to be regular files and reject relative names containing ".." directory components; formerly, only privileged programs did those two things. These changes were inspired by similar behavior in FreeBSD. On NetBSD, unprivileged programs now use O_REGULAR to check whether a TZ setting starting with '/' names a regular file, avoiding a minor security race still present elsewhere. TZ strings taken from tzalloc arguments are now treated with no less caution than TZ strings taken from the environment, as the old undocumented behavior would have been hard to explain. tzset etc. no longer use the ‘access’ system call to check access; instead they now use the system calls issetugid, getauxval, getresuid/getresgid, and geteuid/getegid/getuid/getgid (whichever first works) to test whether a program is privileged. Compile with -DHAVE_SYS_AUXV_H=[01] to enable or disable <sys/auxv.h> which (if it defines AT_SECURE) enables getauxval, and compile with -DHAVE_ISSETUGID=[01], -DHAVE_GETRESUID=[01], and -DHAVE_GETEUID=[01] to enable or disable the other calls’ use. The new CFLAGS option -DTZ_CHANGE_INTERVAL=N makes tzset etc. check for TZif file changes if the in-memory data are N seconds old or more, and are derived from the TZ environment variable. This is intended for platforms that want tzset etc. to reflect changes to whatever file TZ selects (including changes to /etc/localtime if TZ is unset). If N is negative (the default) these checks are omitted; this is the traditional behavior. The new CFLAGS options -DHAVE_STRUCT_STAT_ST_CTIM=0 and -DHAVE_STRUCT_TIMESPEC=0 port to non-POSIX.1-2008 platforms that lack st_ctim and struct timespec, respectively. On these platforms, the code falls back on st_ctime to implement -DTZ_CHANGE_INTERVAL=N. tzset etc. now treat ' ' like '_' in time zone abbreviations, just as they treat other invalid bytes. This continues the transition begun in release 96k, which removed spaces in tzdata because the spaces break time string parsers. The new CFLAGS option -DTHREAD_PREFER_SINGLE causes tzcode in single-threaded processes to avoid locks, as FreeBSD does. This can save time in single-threaded apps. The threadedness testing costs CPU time and energy in multi-threaded apps. New options -DHAVE___ISTHREADED and -DHAVE_SYS_SINGLE_THREADED_H can help configure how to test for single-threadedness. The new CFLAGS option -DTHREAD_RWLOCK uses read-write locks, as macOS does, instead of mutexes. This saves real time when TZ is rarely changing and many threads call tzcode simultaneously. It costs more CPU time and energy. The new CFLAGS option -TTHREAD_TM_MULTI causes localtime to return a pointer to thread-specific memory, as FreeBSD does, instead of to the same memory in all threads. This supports nonportable programs that incorrectly use localtime instead of localtime_r. This option affects gmtime and offtime similarly to localtime. Because the corresponding storage is freed on thread exit, this option is incompatible with POSIX.1-2024 and earlier. It also costs CPU time and memory. tzfree now preserves errno, consistently with POSIX.1-2024 ‘free’. tzcode now uses mempcpy if available, guessing its availability. Compile with -DHAVE_MEMPCPY=1 or 0 to override the guess. tzcode now uses strnlen to improve asymptotic performance a bit. Compile with -DHAVE_STRNLEN=0 if your platform lacks it. tzcode now hand-declares unistd.h-provided symbols like getopt if HAVE_UNISTD_H=0, not if HAVE_POSIX_DECLS=0. tzset etc. now have an experimental OPENAT_TZDIR option; see Makefile and localtime.c for details. On platforms like GNU/Hurd that do not define PATH_MAX, exceedingly long TZ strings no longer fail merely because they exceed an arbitrary file name length limit imposed by tzcode. zic has new options inspired by FreeBSD. ‘-D’ skips creation of output ancestor directories, ‘-m MODE’ sets output files’ mode, and ‘-u OWNER[:GROUP]’ sets output files’ owner and group. zic now uses the fdopen function, which was standardized by POSIX.1-1988 and is now safe to use in portable code. This replaces its use of the older umask function, which complicated maintenance. Changes to commentary The leapseconds file contains commentary about the IERS and NIST last-modified and expiration timestamps for leap second data. (Thanks to Judah Levine.) Commentary now also uses characters from the set –‘’“”•≤ as this can be useful and should work with current applications. This also affects data in iso3166.tab and zone1970.tab, which now contain strings like “Côte d’Ivoire” instead of “Côte d'Ivoire”. Release 2025b - 2025-03-22 13:40:46 -0700 Briefly: New zone for Aysén Region in Chile which moves from -04/-03 to -03. Changes to future timestamps Chile's Aysén Region moves from -04/-03 to -03 year-round, joining Magallanes Region. The region will not change its clocks on 2025-04-05 at 24:00, diverging from America/Santiago and creating a new zone America/Coyhaique. (Thanks to Yonathan Dossow.) Model this as a change to standard offset effective 2025-03-20. Changes to past timestamps Iran switched from +04 to +0330 on 1978-11-10 at 24:00, not at year end. (Thanks to Roozbeh Pournader.) Changes to code 'zic -l TIMEZONE -d . -l /some/other/file/system' no longer attempts to create an incorrect symlink, and no longer has a read buffer underflow. (Problem reported by Evgeniy Gorbanev.) Release 2025a - 2025-01-15 10:47:24 -0800 Briefly: Paraguay adopted permanent -03 starting spring 2024. Improve pre-1991 data for the Philippines. Etc/Unknown is now reserved. Changes to future timestamps Paraguay stopped changing its clocks after the spring-forward transition on 2024-10-06, so it is now permanently at -03. (Thanks to Heitor David Pinto and Even Scharning.) This affects timestamps starting 2025-03-22, as well as the obsolescent tm_isdst flags starting 2024-10-15. Changes to past timestamps Correct timestamps for the Philippines before 1900, and from 1937 through 1990. (Thanks to P Chan for the heads-up and citations.) This includes adjusting local mean time before 1899; fixing transitions in September 1899, January 1937, and June 1954; adding transitions in December 1941, November 1945, March and September 1977, and May and July 1990; and removing incorrect transitions in March and September 1978. Changes to data Add zone1970.tab lines for the Concordia and Eyre Bird Observatory research stations. (Thanks to Derick Rethans and Jule Dabars.) Changes to code strftime %s now generates the correct numeric string even when the represented number does not fit into time_t. This is better than generating the numeric equivalent of (time_t) -1, as strftime did in TZDB releases 96a (when %s was introduced) through 2020a and in releases 2022b through 2024b. It is also better than failing and returning 0, as strftime did in releases 2020b through 2022a. strftime now outputs an invalid conversion specifier as-is, instead of eliding the leading '%', which confused debugging. An invalid TZ now generates the time zone abbreviation "-00", not "UTC", to help the user see that an error has occurred. (Thanks to Arthur David Olson for suggesting a "wrong result".) mktime and timeoff no longer incorrectly fail merely because a struct tm component near INT_MIN or INT_MAX overflows when a lower-order component carries into it. TZNAME_MAXIMUM, the maximum number of bytes in a proleptic TZ string's time zone abbreviation, now defaults to 254 not 255. This helps reduce the size of internal state from 25480 to 21384 on common platforms. This change should not be a problem, as nobody uses such long "abbreviations" and the longstanding tzcode maximum was 16 until release 2023a. For those who prefer no arbitrary limits, you can now specify TZNAME_MAXIMUM values up to PTRDIFF_MAX, a limit forced by C anyway; formerly tzcode silently misbehaved unless TZNAME_MAXIMUM was less than INT_MAX. tzset and related functions no longer leak a file descriptor if another thread forks or execs at about the same time and if the platform has O_CLOFORK and O_CLOEXEC respectively. Also, the functions no longer let a TZif file become a controlling terminal. 'zdump -' now reads TZif data from /dev/stdin. (From a question by Arthur David Olson.) Changes to documentation The name Etc/Unknown is now reserved: it will not be used by TZDB. This is for compatibility with CLDR, which uses the string "Etc/Unknown" for an unknown or invalid timezone. (Thanks to Justin Grant, Mark Davis, and Guy Harris.) Cite Internet RFC 9636, which obsoletes RFC 8536 for TZif format. Release 2024b - 2024-09-04 12:27:47 -0700 Briefly: Improve historical data for Mexico, Mongolia, and Portugal. System V names are now obsolescent. The main data form now uses %z. The code now conforms to RFC 8536 for early timestamps. Support POSIX.1-2024, which removes asctime_r and ctime_r. Assume POSIX.2-1992 or later for shell scripts. SUPPORT_C89 now defaults to 1. Changes to past timestamps Asia/Choibalsan is now an alias for Asia/Ulaanbaatar rather than being a separate Zone with differing behavior before April 2008. This seems better given our wildly conflicting information about Mongolia's time zone history. (Thanks to Heitor David Pinto.) Historical transitions for Mexico have been updated based on official Mexican decrees. The affected timestamps occur during the years 1921-1927, 1931, 1945, 1949-1970, and 1981-1997. The affected zones are America/Bahia_Banderas, America/Cancun, America/Chihuahua, America/Ciudad_Juarez, America/Hermosillo, America/Mazatlan, America/Merida, America/Mexico_City, America/Monterrey, America/Ojinaga, and America/Tijuana. (Thanks to Heitor David Pinto.) Historical transitions for Portugal, represented by Europe/Lisbon, Atlantic/Azores, and Atlantic/Madeira, have been updated based on a close reading of old Portuguese legislation, replacing previous data mainly originating from Whitman and Shanks & Pottenger. These changes affect a few transitions in 1917-1921, 1924, and 1940 throughout these regions by a few hours or days, and various timestamps between 1977 and 1993 depending on the region. In particular, the Azores and Madeira did not observe DST from 1977 to 1981. Additionally, the adoption of standard zonal time in former Portuguese colonies have been adjusted: Africa/Maputo in 1909, and Asia/Dili by 22 minutes at the start of 1912. (Thanks to Tim Parenti.) Changes to past tm_isdst flags The period from 1966-04-03 through 1966-10-02 in Portugal is now modeled as DST, to more closely reflect how contemporaneous changes in law entered into force. Changes to data Names present only for compatibility with UNIX System V (last released in the 1990s) have been moved to 'backward'. These names, which for post-1970 timestamps mostly just duplicate data of geographical names, were confusing downstream uses. Names moved to 'backward' are now links to geographical names. This affects behavior for TZ='EET' for some pre-1981 timestamps, for TZ='CET' for some pre-1947 timestamps, and for TZ='WET' for some pre-1996 timestamps. Also, TZ='MET' now behaves like TZ='CET' and so uses the abbreviation "CET" rather than "MET". Those needing the previous TZDB behavior, which does not match any real-world clocks, can find the old entries in 'backzone'. (Problem reported by Justin Grant.) The main source files' time zone abbreviations now use %z, supported by zic since release 2015f and used in vanguard form since release 2022b. For example, America/Sao_Paulo now contains the zone continuation line "-3:00 Brazil %z", which is less error prone than the old "-3:00 Brazil -03/-02". This does not change the represented data: the generated TZif files are unchanged. Rearguard form still avoids %z, to support obsolescent parsers. Asia/Almaty has been removed from zonenow.tab as it now agrees with Asia/Tashkent for future timestamps, due to Kazakhstan's 2024-02-29 time zone change. Similarly, America/Scoresbysund has been removed, as it now agrees with America/Nuuk due to its 2024-03-31 time zone change. Changes to code localtime.c now always uses a TZif file's time type 0 to handle timestamps before the file's first transition. Formerly, localtime.c sometimes inferred a different time type, in order to handle problematic data generated by zic 2018e or earlier. As it is now safe to assume more recent versions of zic, there is no longer a pressing need to fail to conform RFC 8536 section 3.2, which requires using time type 0 in this situation. This change does not affect behavior when reading TZif files generated by zic 2018f and later. POSIX.1-2024 removes asctime_r and ctime_r and does not let libraries define them, so remove them except when needed to conform to earlier POSIX. These functions are dangerous as they can overrun user buffers. If you still need them, add -DSUPPORT_POSIX2008 to CFLAGS. The SUPPORT_C89 option now defaults to 1 instead of 0, fixing a POSIX-conformance bug introduced in 2023a. tzselect now supports POSIX.1-2024 proleptic TZ strings. Also, it assumes POSIX.2-1992 or later, as practical porting targets now all support that, and it uses some features from POSIX.1-2024 if available. Changes to build procedure 'make check' no longer requires curl and Internet access. The build procedure now assumes POSIX.2-1992 or later, to simplify maintenance. To build on Solaris 10, the only extant system still defaulting to pre-POSIX, prepend /usr/xpg4/bin to PATH. Changes to documentation The documentation now reflects POSIX.1-2024. Changes to commentary Commentary about historical transitions in Portugal and her former colonies has been expanded with links to relevant legislation. (Thanks to Tim Parenti.) Release 2024a - 2024-02-01 09:28:56 -0800 Briefly: Kazakhstan unifies on UTC+5 beginning 2024-03-01. Palestine springs forward a week later after Ramadan. zic no longer pretends to support indefinite-past DST. localtime no longer mishandles Ciudad Juárez in 2422. Changes to future timestamps Kazakhstan unifies on UTC+5. This affects Asia/Almaty and Asia/Qostanay which together represent the eastern portion of the country that will transition from UTC+6 on 2024-03-01 at 00:00 to join the western portion. (Thanks to Zhanbolat Raimbekov.) Palestine springs forward a week later than previously predicted in 2024 and 2025. (Thanks to Heba Hamad.) Change spring-forward predictions to the second Saturday after Ramadan, not the first; this also affects other predictions starting in 2039. Changes to past timestamps Asia/Ho_Chi_Minh's 1955-07-01 transition occurred at 01:00 not 00:00. (Thanks to Đoàn Trần Công Danh.) From 1947 through 1949, Toronto's transitions occurred at 02:00 not 00:00. (Thanks to Chris Walton.) In 1911 Miquelon adopted standard time on June 15, not May 15. Changes to code The FROM and TO columns of Rule lines can no longer be "minimum" or an abbreviation of "minimum", because TZif files do not support DST rules that extend into the indefinite past - although these rules were supported when TZif files had only 32-bit data, this stopped working when 64-bit TZif files were introduced in 1995. This should not be a problem for realistic data, since DST was first used in the 20th century. As a transition aid, FROM columns like "minimum" are now diagnosed and then treated as if they were the year 1900; this should suffice for TZif files on old systems with only 32-bit time_t, and it is more compatible with bugs in 2023c-and-earlier localtime.c. (Problem reported by Yoshito Umaoka.) localtime and related functions no longer mishandle some timestamps that occur about 400 years after a switch to a time zone with a DST schedule. In 2023d data this problem was visible for some timestamps in November 2422, November 2822, etc. in America/Ciudad_Juarez. (Problem reported by Gilmore Davidson.) strftime %s now uses tm_gmtoff if available. (Problem and draft patch reported by Dag-Erling Smørgrav.) Changes to build procedure The leap-seconds.list file is now copied from the IERS instead of from its downstream counterpart at NIST, as the IERS version is now in the public domain too and tends to be more up-to-date. (Thanks to Martin Burnicki for liaisoning with the IERS.) Changes to documentation The strftime man page documents which struct tm members affect which conversion specs, and that tzset is called. (Problems reported by Robert Elz and Steve Summit.) Release 2023d - 2023-12-21 20:02:24 -0800 Briefly: Ittoqqortoormiit, Greenland changes time zones on 2024-03-31. Vostok, Antarctica changed time zones on 2023-12-18. Casey, Antarctica changed time zones five times since 2020. Code and data fixes for Palestine timestamps starting in 2072. A new data file zonenow.tab for timestamps starting now. Changes to future timestamps Ittoqqortoormiit, Greenland (America/Scoresbysund) joins most of the rest of Greenland's timekeeping practice on 2024-03-31, by changing its time zone from -01/+00 to -02/-01 at the same moment as the spring-forward transition. Its clocks will therefore not spring forward as previously scheduled. The time zone change reverts to its common practice before 1981. (Thanks to Jule Dabars.) Fix predictions for DST transitions in Palestine in 2072-2075, correcting a typo introduced in 2023a. (Thanks to Jule Dabars.) Changes to past and future timestamps Vostok, Antarctica changed to +05 on 2023-12-18. It had been at +07 (not +06) for years. (Thanks to Zakhary V. Akulov.) Change data for Casey, Antarctica to agree with timeanddate.com, by adding five time zone changes since 2020. Casey is now at +08 instead of +11. Changes to past tm_isdst flags Much of Greenland, represented by America/Nuuk, changed its standard time from -03 to -02 on 2023-03-25, not on 2023-10-28. This does not affect UTC offsets, only the tm_isdst flag. (Thanks to Thomas M. Steenholdt.) New data file A new data file zonenow.tab helps configure applications that use timestamps dated from now on. This simplifies configuration, since users choose from a smaller Zone set. The file's format is experimental and subject to change. Changes to code localtime.c no longer mishandles TZif files that contain a single transition into a DST regime. Previously, it incorrectly assumed DST was in effect before the transition too. (Thanks to Alois Treindl for debugging help.) localtime.c's timeoff no longer collides with OpenBSD 7.4. The C code now uses _Generic only if __STDC_VERSION__ says the compiler is C11 or later. tzselect now optionally reads zonenow.tab, to simplify when configuring only for timestamps dated from now on. tzselect no longer creates temporary files. tzselect no longer mishandles the following: Spaces and most other special characters in BUGEMAIL, PACKAGE, TZDIR, and VERSION. TZ strings when using mawk 1.4.3, which mishandles regular expressions of the form /X{2,}/. ISO 6709 coordinates when using an awk that lacks the GNU extension of newlines in -v option-arguments. Non UTF-8 locales when using an iconv command that lacks the GNU //TRANSLIT extension. zic no longer mishandles data for Palestine after the year 2075. Previously, it incorrectly omitted post-2075 transitions that are predicted for just before and just after Ramadan. (Thanks to Ken Murchison for debugging help.) zic now works again on Linux 2.6.16 and 2.6.17 (2006). (Problem reported by Rune Torgersen.) Changes to build procedure The Makefile is now more compatible with POSIX: * It no longer defines AR, CC, CFLAGS, LDFLAGS, and SHELL. * It no longer uses its own 'cc' in place of CC. * It now uses ARFLAGS, with default specified by POSIX. * It does not use LFLAGS incompatibly with POSIX. * It uses the special .POSIX target. * It quotes special characters more carefully. * It no longer mishandles builds in an ISO 8859 locale. Due to the CC changes, TZDIR is now #defined in a file tzdir.h built by 'make', not in a $(CC) -D option. Also, TZDEFAULT is now treated like TZDIR as they have similar roles. Changes to commentary Limitations and hazards of the optional support for obsolescent C89 platforms are documented better, along with a tentative schedule for removing this support. Release 2023c - 2023-03-28 12:42:14 -0700 Changes to past and future timestamps Model Lebanon's DST chaos by reverting data to tzdb 2023a. (Thanks to Rany Hany for the heads-up.) Release 2023b - 2023-03-23 19:50:38 -0700 Changes to future timestamps This year Lebanon springs forward April 20/21 not March 25/26. (Thanks to Saadallah Itani.) [This was reverted in 2023c.] Release 2023a - 2023-03-22 12:39:33 -0700 Briefly: Egypt now uses DST again, from April through October. This year Morocco springs forward April 23, not April 30. Palestine delays the start of DST this year. Much of Greenland still uses DST from 2024 on. America/Yellowknife now links to America/Edmonton. tzselect can now use current time to help infer timezone. The code now defaults to C99 or later. Fix use of C23 attributes. Changes to future timestamps Starting in 2023, Egypt will observe DST from April's last Friday through October's last Thursday. (Thanks to Ahmad ElDardiry.) Assume the transition times are 00:00 and 24:00, respectively. In 2023 Morocco's spring-forward transition after Ramadan will occur April 23, not April 30. (Thanks to Milamber.) Adjust predictions for future years accordingly. This affects predictions for 2023, 2031, 2038, and later years. This year Palestine will delay its spring forward from March 25 to April 29 due to Ramadan. (Thanks to Heba Hamad.) Make guesses for future Ramadans too. Much of Greenland, represented by America/Nuuk, will continue to observe DST using European Union rules. When combined with Greenland's decision not to change the clocks in fall 2023, America/Nuuk therefore changes from -03/-02 to -02/-01 effective 2023-10-29 at 01:00 UTC. (Thanks to Thomas M. Steenholdt.) This change from 2022g doesn't affect timestamps until 2024-03-30, and doesn't affect tm_isdst until 2023-03-25. Changes to past timestamps America/Yellowknife has changed from a Zone to a backward compatibility Link, as it no longer differs from America/Edmonton since 1970. (Thanks to Almaz Mingaleev.) This affects some pre-1948 timestamps. The old data are now in 'backzone'. Changes to past time zone abbreviations When observing Moscow time, Europe/Kirov and Europe/Volgograd now use the abbreviations MSK/MSD instead of numeric abbreviations, for consistency with other timezones observing Moscow time. Changes to code You can now tell tzselect local time, to simplify later choices. Select the 'time' option in its first prompt. You can now compile with -DTZNAME_MAXIMUM=N to limit time zone abbreviations to N bytes (default 255). The reference runtime library now rejects POSIX-style TZ strings that contain longer abbreviations, treating them as UTC. Previously the limit was platform dependent and abbreviations were silently truncated to 16 bytes even when the limit was greater than 16. The code by default is now designed for C99 or later. To build on a mostly-C89 platform, compile with -DPORT_TO_C89; this should work on C89 platforms that also support C99 'long long' and perhaps a few other extensions to C89. To support C89 callers of tzcode's library, compile with -DSUPPORT_C89; however, this could trigger latent bugs in C99-or-later callers. The two new macros are transitional aids planned to be removed in a future version (say, in 2029), when C99 or later will be required. The code now builds again on pre-C99 platforms, if you compile with -DPORT_TO_C89. This fixes a bug introduced in 2022f. On C23-compatible platforms tzcode no longer uses syntax like 'static [[noreturn]] void usage(void);'. Instead, it uses '[[noreturn]] static void usage(void);' as strict C23 requires. (Problem reported by Houge Langley.) The code's functions now constrain their arguments with the C 'restrict' keyword consistently with their documentation. This may allow future optimizations. zdump again builds standalone with ckdadd and without setenv, fixing a bug introduced in 2022g. (Problem reported by panic.) leapseconds.awk can now process a leap seconds file that never expires; this might be useful if leap seconds are discontinued. Changes to commentary tz-link.html has a new section "Coordinating with governments and distributors". (Thanks to Neil Fuller for some of the text.) To improve tzselect diagnostics, zone1970.tab's comments column is now limited to countries that have multiple timezones. Note that there are plans to discontinue leap seconds by 2035. Release 2022g - 2022-11-29 08:58:31 -0800 Briefly: The northern edge of Chihuahua changes to US timekeeping. Much of Greenland stops changing clocks after March 2023. Fix some pre-1996 timestamps in northern Canada. C89 is now deprecated; please use C99 or later. Portability fixes for AIX, libintl, MS-Windows, musl, z/OS In C code, use more C23 features if available. C23 timegm now supported by default Fixes for unlikely integer overflows Changes to future timestamps In the Mexican state of Chihuahua, the border strip near the US will change to agree with nearby US locations on 2022-11-30. The strip's western part, represented by Ciudad Juárez, switches from -06 all year to -07/-06 with US DST rules, like El Paso, TX. The eastern part, represented by Ojinaga, will observe US DST next year, like Presidio, TX. (Thanks to Heitor David Pinto.) A new Zone America/Ciudad_Juarez splits from America/Ojinaga. Much of Greenland, represented by America/Nuuk, stops observing winter time after March 2023, so its daylight saving time becomes standard time. (Thanks to Jonas Nyrup and Jürgen Appel.) Changes to past timestamps Changes for pre-1996 northern Canada (thanks to Chris Walton): Merge America/Iqaluit and America/Pangnirtung into the former, with a backward compatibility link for the latter name. There is no good evidence the two locations differ since 1970. This change affects pre-1996 America/Pangnirtung timestamps. Cambridge Bay, Inuvik, Iqaluit, Rankin Inlet, Resolute and Yellowknife did not observe DST in 1965, and did observe DST from 1972 through 1979. Whitehorse moved from -09 to -08 on 1966-02-27, not 1967-05-28. Colombia's 1993 fallback was 02-06 24:00, not 04-04 00:00. (Thanks to Alois Treindl.) Singapore's 1981-12-31 change was at 16:00 UTC (23:30 local time), not 24:00 local time. (Thanks to Geoff Clare via Robert Elz.) Changes to code Although tzcode still works with C89, bugs found in recent routine maintenance indicate that bitrot has set in and that in practice C89 is no longer used to build tzcode. As it is a maintenance burden, support for C89 is planned to be removed soon. Instead, please use compilers compatible with C99, C11, C17, or C23. timegm, which tzcode implemented in 1989, will finally be standardized 34 years later as part of C23, so timegm is now supported even if STD_INSPIRED is not defined. Fix bug in zdump's tzalloc emulation on hosts that lack tm_zone. (Problem reported by Đoàn Trần Công Danh.) Fix bug in zic on hosts where malloc(0) yields NULL on success. (Problem reported by Tim McBrayer for AIX 6.1.) Fix zic configuration to avoid linkage failures on some platforms. (Problems reported by Gilmore Davidson and Igor Ivanov.) Work around MS-Windows nmake incompatibility with POSIX. (Problem reported by Manuela Friedrich.) Port mktime and strftime to debugging platforms where accessing uninitialized data has undefined behavior (strftime problem reported by Robert Elz). Check more carefully for unlikely integer overflows, preferring C23 <stdckdint.h> to overflow checking by hand, as the latter has had obscure bugs. Changes to build procedure New Makefile rule check_mild that skips checking whether Link lines are in the file 'backward'. (Inspired by a suggestion from Stephen Colebourne.) Release 2022f - 2022-10-28 18:04:57 -0700 Briefly: Mexico will no longer observe DST except near the US border. Chihuahua moves to year-round -06 on 2022-10-30. Fiji no longer observes DST. Move links to 'backward'. In vanguard form, GMT is now a Zone and Etc/GMT a link. zic now supports links to links, and vanguard form uses this. Simplify four Ontario zones. Fix a Y2438 bug when reading TZif data. Enable 64-bit time_t on 32-bit glibc platforms. Omit large-file support when no longer needed. In C code, use some C23 features if available. Remove no-longer-needed workaround for Qt bug 53071. Changes to future timestamps Mexico will no longer observe DST after 2022, except for areas near the US border that continue to observe US DST rules. On 2022-10-30 at 02:00 the Mexican state of Chihuahua moves from -07 (-06 with DST) to year-round -06, thus not changing its clocks that day. The new law states that Chihuahua near the US border no longer observes US DST. (Thanks to gera for the heads-up about Chihuahua.) Fiji will not observe DST in 2022/3. (Thanks to Shalvin Narayan.) For now, assume DST is suspended indefinitely. Changes to data Move links to 'backward' to ease and simplify link maintenance. This affects generated data only if you use 'make BACKWARD='. GMT is now a Zone and Etc/GMT a link instead of vice versa, as GMT is needed for leap second support whereas Etc/GMT is not. However, this change exposes a bug in TZUpdater 2.3.2 so it is present only in vanguard form for now. Vanguard form now uses links to links, as zic now supports this. Changes to past timestamps Simplify four Ontario zones, as most of the post-1970 differences seem to have been imaginary. (Problem reported by Chris Walton.) Move America/Nipigon, America/Rainy_River, and America/Thunder_Bay to 'backzone'; backward-compatibility links still work, albeit with some different timestamps before November 2005. Changes to code zic now supports links to links regardless of input line order. For example, if Australia/Sydney is a Zone, the lines Link Australia/Canberra Australia/ACT Link Australia/Sydney Australia/Canberra now work correctly, even though the shell commands ln Australia/Canberra Australia/ACT ln Australia/Sydney Australia/Canberra would fail because the first command attempts to use a link Australia/Canberra that does not exist until after the second command is executed. Previously, zic had unspecified behavior if a Link line's target was another link, and zic often misbehaved if a Link line's target was a later Link line. Fix line number in zic's diagnostic for a link to a link. Fix a bug that caused localtime to mishandle timestamps starting in the year 2438 when reading data generated by 'zic -b fat' when distant-future DST transitions occur at times given in standard time or in UT, not the usual case of local time. This occurs when the corresponding .zi Rule lines specify DST transitions with TO columns of 'max' and AT columns that end in 's' or 'u'. The number 2438 comes from the 32-bit limit in the year 2038, plus the 400-year Gregorian cycle. (Problem reported by Bradley White.) On glibc 2.34 and later, which optionally supports 64-bit time_t on platforms like x86 where time_t was traditionally 32 bits, default time_t to 64 instead of 32 bits. This lets functions like localtime support timestamps after the year 2038, and fixes year-2038 problems in zic when accessing files dated after 2038. To continue to limit time_t to 32 bits on these platforms, use "make CFLAGS='-D_TIME_BITS=32'". In C code, do not enable large-file support on platforms like AIX and macOS that no longer need it now that tzcode does not use off_t or related functions like 'stat'. Large-file support is still enabled by default on GNU/Linux, as it is needed for 64-bit time_t support. In C code, prefer C23 keywords to pre-C23 macros for alignof, bool, false, and true. Also, use the following C23 features if available: __has_include, unreachable. zic no longer works around Qt bug 53071, as the relevant Qt releases have been out of support since 2019. This change affects only fat TZif files, as thin files never had the workaround. zdump no longer modifies the environ vector when compiled on platforms lacking tm_zone or when compiled with -DUSE_LTZ=0. This avoid undefined behavior on POSIX platforms. Release 2022e - 2022-10-11 11:13:02 -0700 Briefly: Jordan and Syria switch from +02/+03 with DST to year-round +03. Changes to future timestamps Jordan and Syria are abandoning the DST regime and are changing to permanent +03, so they will not fall back from +03 to +02 on 2022-10-28. (Thanks to Steffen Thorsen and Issam Al-Zuwairi.) Changes to past timestamps On 1922-01-01 Tijuana adopted standard time at 00:00, not 01:00. Changes to past time zone abbreviations and DST flags The temporary advancement of clocks in central Mexico in summer 1931 is now treated as daylight saving time, instead of as two changes to standard time. Release 2022d - 2022-09-23 12:02:57 -0700 Briefly: Palestine transitions are now Saturdays at 02:00. Simplify three Ukraine zones into one. Changes to future timestamps Palestine now springs forward and falls back at 02:00 on the first Saturday on or after March 24 and October 24, respectively. This means 2022 falls back 10-29 at 02:00, not 10-28 at 01:00. (Thanks to Heba Hamad.) Changes to past timestamps Simplify three Ukraine zones to one, since the post-1970 differences seem to have been imaginary. Move Europe/Uzhgorod and Europe/Zaporozhye to 'backzone'; backward-compatibility links still work, albeit with different timestamps before October 1991. Release 2022c - 2022-08-15 17:47:18 -0700 Briefly: Work around awk bug in FreeBSD, macOS, etc. Improve tzselect on intercontinental Zones. Changes to code Work around a bug in onetrueawk that broke commands like 'make traditional_tarballs' on FreeBSD, macOS, etc. (Problem reported by Deborah Goldsmith.) Add code to tzselect that uses experimental structured comments in zone1970.tab to clarify whether Zones like Africa/Abidjan and Europe/Istanbul cross continent or ocean boundaries. (Inspired by a problem reported by Peter Krefting.) Fix bug with 'zic -d /a/b/c' when /a is unwritable but the directory /a/b already exists. Remove zoneinfo2tdf.pl, as it was unused and triggered false malware alarms on some email servers. Release 2022b - 2022-08-10 15:38:32 -0700 Briefly: Chile's DST is delayed by a week in September 2022. Iran no longer observes DST after 2022. Rename Europe/Kiev to Europe/Kyiv. New zic -R option Vanguard form now uses %z. Finish moving duplicate-since-1970 zones to 'backzone'. New build option PACKRATLIST New tailored_tarballs target, replacing rearguard_tarballs Changes to future timestamps Chile's 2022 DST start is delayed from September 4 to September 11. (Thanks to Juan Correa.) Iran plans to stop observing DST permanently, after it falls back on 2022-09-21. (Thanks to Ali Mirjamali.) Changes to past timestamps Finish moving to 'backzone' the location-based zones whose timestamps since 1970 are duplicates; adjust links accordingly. This change ordinarily affects only pre-1970 timestamps, and with the new PACKRATLIST option it does not affect any timestamps. In this round the affected zones are Antarctica/Vostok, Asia/Brunei, Asia/Kuala_Lumpur, Atlantic/Reykjavik, Europe/Amsterdam, Europe/Copenhagen, Europe/Luxembourg, Europe/Monaco, Europe/Oslo, Europe/Stockholm, Indian/Christmas, Indian/Cocos, Indian/Kerguelen, Indian/Mahe, Indian/Reunion, Pacific/Chuuk, Pacific/Funafuti, Pacific/Majuro, Pacific/Pohnpei, Pacific/Wake and Pacific/Wallis, and the affected links are Arctic/Longyearbyen, Atlantic/Jan_Mayen, Iceland, Pacific/Ponape, Pacific/Truk, and Pacific/Yap. From fall 1994 through fall 1995, Shanks wrote that Crimea's DST transitions were at 02:00 standard time, not at 00:00. (Thanks to Michael Deckers.) Iran adopted standard time in 1935, not 1946. In 1977 it observed DST from 03-21 23:00 to 10-20 24:00; its 1978 transitions were on 03-24 and 08-05, not 03-20 and 10-20; and its spring 1979 transition was on 05-27, not 03-21. (Thanks to Roozbeh Pournader and Francis Santoni.) Chile's observance of -04 from 1946-08-29 through 1947-03-31 was considered DST, not standard time. Santiago and environs had moved their clocks back to rejoin the rest of mainland Chile; put this change at the end of 1946-08-28. (Thanks to Michael Deckers.) Some old, small clock transitions have been removed, as people at the time did not change their clocks. This affects Asia/Hong_Kong in 1904, Asia/Ho_Chi_Minh in 1906, and Europe/Dublin in 1880. Changes to zone name Rename Europe/Kiev to Europe/Kyiv, as "Kyiv" is more common in English now. Spelling of other names in Ukraine has not yet demonstrably changed in common English practice so for now these names retain old spellings, as in other countries (e.g., Europe/Prague not "Praha", and Europe/Sofia not "Sofiya"). Changes to code zic has a new option '-R @N' to output explicit transitions < N. (Need suggested by Almaz Mingaleev.) 'zic -r @N' no longer outputs bad data when N < first transition. (Problem introduced in 2021d and reported by Peter Krefting.) zic now checks its input for NUL bytes and unterminated lines, and now supports input line lengths up to 2048 (not 512) bytes. gmtime and related code now use the abbreviation "UTC" not "GMT". POSIX is being revised to require this. When tzset and related functions set vestigial static variables like tzname, they now prefer specified timestamps to unspecified ones. (Problem reported by Almaz Mingaleev.) zic no longer complains "can't determine time zone abbreviation to use just after until time" when a transition to a new standard time occurs simultaneously with the first DST fallback transition. Changes to build procedure Source data in vanguard form now uses the %z notation, introduced in release 2015f. For example, for America/Sao_Paulo vanguard form contains the zone continuation line "-3:00 Brazil %z", which is simpler and more reliable than the line "-3:00 Brazil -03/-02" used in main and rearguard forms. The plan is for the main form to use %z eventually; in the meantime maintainers of zi parsers are encouraged to test the parsers on vanguard.zi. The Makefile has a new PACKRATLIST option to select a subset of 'backzone'. For example, 'make PACKRATDATA=backzone PACKRATLIST=zone.tab' now generates TZif files identical to those of the global-tz project. The Makefile has a new tailored_tarballs target for generating special-purpose tarballs. It generalizes and replaces the rearguard_tarballs target and related targets and macros, which are now obsolescent. 'make install' now defaults LOCALTIME to Factory not GMT, which means the default abbreviation is now "-00" not "GMT". Remove the posix_packrat target, marked obsolescent in 2016a. Release 2022a - 2022-03-15 23:02:01 -0700 Briefly: Palestine will spring forward on 2022-03-27, not -03-26. zdump -v now outputs better failure indications. Bug fixes for code that reads corrupted TZif data. Changes to future timestamps Palestine will spring forward on 2022-03-27, not 2022-03-26. (Thanks to Heba Hamad.) Predict future transitions for first Sunday >= March 25. Additionally, predict fallbacks to be the first Friday on or after October 23, not October's last Friday, to be more consistent with recent practice. The first differing fallback prediction is on 2025-10-24, not 2025-10-31. Changes to past timestamps From 1992 through spring 1996, Ukraine's DST transitions were at 02:00 standard time, not at 01:00 UTC. (Thanks to Alois Treindl.) Chile's Santiago Mean Time and its LMT precursor have been adjusted eastward by 1 second to align with past and present law. Changes to commentary Add several references for Chile's 1946/1947 transitions, some of which only affected portions of the country. Changes to code Fix bug when mktime gets confused by truncated TZif files with unspecified local time. (Problem reported by Almaz Mingaleev.) Fix bug when 32-bit time_t code reads malformed 64-bit TZif data. (Problem reported by Christos Zoulas.) When reading a version 2 or later TZif file, the TZif reader now validates the version 1 header and data block only enough to skip over them, as recommended by RFC 8536 section 4. Also, the TZif reader no longer mistakenly attempts to parse a version 1 TZIf file header as a TZ string. zdump -v now outputs "(localtime failed)" and "(gmtime failed)" when local time and UT cannot be determined for a timestamp. Changes to build procedure Distribution tarballs now use standard POSIX.1-1988 ustar format instead of GNU format. Although the formats are almost identical for these tarballs, ustar headers' magic fields contain "ustar" instead of "ustar ", and their version fields contain "00" instead of " ". The two formats are planned to diverge more significantly for tzdb releases after 2242-03-16 12:56:31 UTC, when the ustar format becomes obsolete and the tarballs switch to pax format, an extension of ustar. For details about these formats, please see "pax - portable archive interchange", IEEE Std 1003.1-2017, <https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13>. Release 2021e - 2021-10-21 18:41:00 -0700 Changes to future timestamps Palestine will fall back 10-29 (not 10-30) at 01:00. (Thanks to P Chan and Heba Hemad.) Release 2021d - 2021-10-15 13:48:18 -0700 Briefly: Fiji suspends DST for the 2021/2022 season. 'zic -r' marks unspecified timestamps with "-00". Changes to future timestamps Fiji will suspend observance of DST for the 2021/2022 season. Assume for now that it will return next year. (Thanks to Jashneel Kumar and P Chan.) Changes to code 'zic -r' now uses "-00" time zone abbreviations for intervals with UT offsets that are unspecified due to -r truncation. This implements a change in draft Internet RFC 8536bis. Release 2021c - 2021-10-01 14:21:49 -0700 Briefly: Revert most 2021b changes to 'backward'. Fix 'zic -b fat' bug in pre-1970 32-bit data. Fix two Link line typos. Distribute SECURITY file. This release is intended as a bugfix release, to fix compatibility problems and typos reported since 2021b was released. Changes to Link directives Revert almost all of 2021b's changes to the 'backward' file, by moving Link directives back to where they were in 2021a. Although 'zic' doesn't care which source file contains a Link directive, some downstream uses ran into trouble with the move. (Problem reported by Stephen Colebourne for Joda-Time.) Fix typo that linked Atlantic/Jan_Mayen to the wrong location (problem reported by Chris Walton). Fix 'backzone' typo that linked America/Virgin to the wrong location (problem reported by Michael Deckers). Changes to code Fix a bug in 'zic -b fat' that caused old timestamps to be mishandled in 32-bit-only readers (problem reported by Daniel Fischer). Changes to documentation Distribute the SECURITY file (problem reported by Andreas Radke). Release 2021b - 2021-09-24 16:23:00 -0700 Briefly: Jordan now starts DST on February's last Thursday. Samoa no longer observes DST. Merge more location-based Zones whose timestamps agree since 1970. Move some backward-compatibility links to 'backward'. Rename Pacific/Enderbury to Pacific/Kanton. Correct many pre-1993 transitions in Malawi, Portugal, etc. zic now creates each output file or link atomically. zic -L no longer omits the POSIX TZ string in its output. zic fixes for truncation and leap second table expiration. zic now follows POSIX for TZ strings using all-year DST. Fix some localtime crashes and bugs in obscure cases. zdump -v now outputs more-useful boundary cases. tzfile.5 better matches a draft successor to RFC 8536. A new file SECURITY. This release is prompted by recent announcements by Jordan and Samoa. It incorporates many other changes that had accumulated since 2021a. However, it omits most proposed changes that merged all Zones agreeing since 1970, as concerns were raised about doing too many of these changes at once. It does keeps some of these changes in the interest of making tzdb more equitable one step at a time; see "Merge more location-based Zones" below. Changes to future timestamps Jordan now starts DST on February's last Thursday. (Thanks to Steffen Thorsen.) Samoa no longer observes DST. (Thanks to Geoffrey D. Bennett.) Changes to zone name Rename Pacific/Enderbury to Pacific/Kanton. When we added Enderbury in 1993, we did not know that it is uninhabited and that Kanton (population two dozen) is the only inhabited location in that timezone. The old name is now a backward-compatibility link. Changes to past timestamps Correct many pre-1993 transitions, fixing entries originally derived from Shanks, Whitman, and Mundell. The fixes include: - Barbados: standard time was introduced in 1911, not 1932; and DST was observed in 1942-1944 - Cook Islands: In 1899 they switched from east to west of GMT, celebrating Christmas for two days. They (and Niue) switched to standard time in 1952, not 1901. - Guyana: corrected LMT for Georgetown; the introduction of standard time in 1911, not 1915; and corrections to 1975 and 1992 transitions - Kanton: uninhabited before 1937-08-31 - Niue: only observed -11:20 from 1952 through 1964, then went to -11 instead of -11:30 - Portugal: DST was observed in 1950 - Tonga: corrected LMT; the introduction of standard time in 1945, not 1901; and corrections to the transition from +12:20 to +13 in 1961, not 1941 Additional fixes to entries in the 'backzone' file include: - Enderbury: inhabited only 1860/1885 and 1938-03-06/1942-02-09 - The Gambia: 1933 and 1942 transitions - Malawi: several 1911 through 1925 transitions - Sierra Leone: several 1913 through 1941 transitions, and DST was NOT observed in 1957 through 1962 (Thanks to P Chan, Michael Deckers, Alexander Krivenyshev and Alois Treindl.) Merge more location-based Zones whose timestamps agree since 1970, as pre-1970 timestamps are out of scope. This is part of a process that has been ongoing since 2013. This does not affect post-1970 timestamps, and timezone historians who build with 'make PACKRATDATA=backzone' should see no changes to pre-1970 timestamps. When merging, keep the most-populous location's data, and move data for other locations to 'backzone' with a backward link in 'backward'. For example, move America/Creston data to 'backzone' with a link in 'backward' from America/Phoenix because the two timezones' timestamps agree since 1970; this change affects some pre-1968 timestamps in America/Creston because Creston and Phoenix disagreed before 1968. The affected Zones are Africa/Accra, America/Atikokan, America/Blanc-Sablon, America/Creston, America/Curacao, America/Nassau, America/Port_of_Spain, Antarctica/DumontDUrville, and Antarctica/Syowa. Changes to maintenance procedure The new file SECURITY covers how to report security-related bugs. Several backward-compatibility links have been moved to the 'backward' file. These links, which range from Africa/Addis_Ababa to Pacific/Saipan, are only for compatibility with now-obsolete guidelines suggesting an entry for every ISO 3166 code. The intercontinental convenience links Asia/Istanbul and Europe/Nicosia have also been moved to 'backward'. Changes to code zic now creates each output file or link atomically, possibly by creating a temporary file and then renaming it. This avoids races where a TZ setting would temporarily stop working while zic was installing a replacement file or link. zic -L no longer omits the POSIX TZ string in its output. Starting with 2020a, zic -L truncated its output according to the "Expires" directive or "#expires" comment in the leapseconds file. The resulting TZif files omitted daylight saving transitions after the leap second table expired, which led to far less accurate predictions of times after the expiry. Although future timestamps cannot be converted accurately in the presence of leap seconds, it is more accurate to convert near-future timestamps with a few seconds error than with an hour error, so zic -L no longer truncates output in this way. Instead, when zic -L is given the "Expires" directive, it now outputs the expiration by appending a no-change entry to the leap second table. Although this should work well with most TZif readers, it does not conform to Internet RFC 8536 and some pickier clients (including tzdb 2017c through 2021a) reject it, so "Expires" directives are currently disabled by default. To enable them, set the EXPIRES_LINE Makefile variable. If a TZif file uses this new feature it is marked with a new TZif version number 4, a format intended to be documented in a successor to RFC 8536. The old-format "#expires" comments are now treated solely as comments and have no effect on the TZif files. zic -L LEAPFILE -r @LO no longer generates an invalid TZif file that omits leap second information for the range LO..B when LO falls between two leap seconds A and B. Instead, it generates a TZif version 4 file that represents the previously missing information. The TZif reader now allows the leap second table to begin with a correction other than -1 or +1, and to contain adjacent transitions with equal corrections. This supports TZif version 4. The TZif reader now lets leap seconds occur less than 28 days apart. This supports possible future TZif extensions. Fix bug that caused 'localtime' etc. to crash when TZ was set to a all-year DST string like "EST5EDT4,0/0,J365/25" that does not conform to POSIX but does conform to Internet RFC 8536. Fix another bug that caused 'localtime' etc. to crash when TZ was set to a POSIX-conforming but unusual TZ string like "EST5EDT4,0/0,J365/0", where almost all the year is DST. Fix yet another bug that caused 'localtime' etc. to mishandle slim TZif files containing leap seconds after the last explicit transition in the table, or when handling far-future timestamps in slim TZif files lacking leap seconds. Fix localtime misbehavior involving positive leap seconds. This change affects only behavior for "right" system time, which contains leap seconds, and only if the UT offset is not a multiple of 60 seconds when a positive leap second occurs. (No such timezone exists in tzdb, luckily.) Without the fix, the timestamp was ambiguous during a positive leap second. With the fix, any seconds occurring after a positive leap second and within the same localtime minute are counted through 60, not through 59; their UT offset (tm_gmtoff) is the same as before. Here is how the fix affects timestamps in a timezone with UT offset +01:23:45 (5025 seconds) and with a positive leap second at 1972-06-30 23:59:60 UTC (78796800): time_t without the fix with the fix 78796800 1972-07-01 01:23:45 1972-07-01 01:23:45 (leap second) 78796801 1972-07-01 01:23:45 1972-07-01 01:23:46 ... 78796815 1972-07-01 01:23:59 1972-07-01 01:23:60 78796816 1972-07-01 01:24:00 1972-07-01 01:24:00 Fix an unlikely bug that caused 'localtime' etc. to misbehave if civil time changes a few seconds before time_t wraps around, when leap seconds are enabled. Fix bug in zic -r; in some cases, the dummy time type after the last time transition disagreed with the TZ string, contrary to Internet RFC 8563 section 3.3. Fix a bug with 'zic -r @X' when X is a negative leap second that has a nonnegative correction. Without the fix, the output file was truncated so that X appeared to be a positive leap second. Fix a similar, even less likely bug when truncating at a positive leap second that has a nonpositive correction. zic -r now reports an error if given rolling leap seconds, as this usage has never generally worked and is evidently unused. zic now generates a POSIX-conforming TZ string for TZif files where all-year DST is predicted for the indefinite future. For example, for all-year Eastern Daylight Time, zic now generates "XXX3EDT4,0/0,J365/23" where it previously generated "EST5EDT,0/0,J365/25" or "". (Thanks to Michael Deckers for noting the possibility of POSIX conformance.) zic.c no longer requires sys/wait.h (thanks to spazmodius for noting it wasn't needed). When reading slim TZif files, zdump no longer mishandles leap seconds on the rare platforms where time_t counts leap seconds, fixing a bug introduced in 2014g. zdump -v now outputs timestamps at boundaries of what localtime and gmtime can represent, instead of the less useful timestamps one day after the minimum and one day before the maximum. (Thanks to Arthur David Olson for prototype code, and to Manuela Friedrich for debugging help.) zdump's -c and -t options are now consistently inclusive for the lower time bound and exclusive for the upper. Formerly they were inconsistent. (Confusion noted by Martin Burnicki.) Changes to build procedure You can now compile with -DHAVE_MALLOC_ERRNO=0 to port to non-POSIX hosts where malloc doesn't set errno. (Problem reported by Jan Engelhardt.) Changes to documentation tzfile.5 better matches a draft successor to RFC 8536 <https://datatracker.ietf.org/doc/draft-murchison-rfc8536bis/01/>. Release 2021a - 2021-01-24 10:54:57 -0800 Changes to future timestamps South Sudan changes from +03 to +02 on 2021-02-01 at 00:00. (Thanks to Steffen Thorsen.) Release 2020f - 2020-12-29 00:17:46 -0800 Change to build procedure 'make rearguard_tarballs' no longer generates a bad rearguard.zi, fixing a 2020e bug. (Problem reported by Deborah Goldsmith.) Release 2020e - 2020-12-22 15:14:34 -0800 Briefly: Volgograd switches to Moscow time on 2020-12-27 at 02:00. Changes to future timestamps Volgograd changes time zone from +04 to +03 on 2020-12-27 at 02:00. (Thanks to Alexander Krivenyshev and Stepan Golosunov.) Changes to past timestamps Correct many pre-1986 transitions, fixing entries originally derived from Shanks. The fixes include: - Australia: several 1917 through 1971 transitions - The Bahamas: several 1941 through 1945 transitions - Bermuda: several 1917 through 1956 transitions - Belize: several 1942 through 1968 transitions - Ghana: several 1915 through 1956 transitions - Israel and Palestine: several 1940 through 1985 transitions - Kenya and adjacent: several 1908 through 1960 transitions - Nigeria and adjacent: correcting LMT in Lagos, and several 1905 through 1919 transitions - Seychelles: the introduction of standard time in 1907, not 1906 - Vanuatu: DST in 1973-1974, and a corrected 1984 transition (Thanks to P Chan.) Because of the Australia change, Australia/Currie (King Island) is no longer needed, as it is identical to Australia/Hobart for all timestamps since 1970 and was therefore created by mistake. Australia/Currie has been moved to the 'backward' file and its corrected data moved to the 'backzone' file. Changes to past time zone abbreviations and DST flags To better match legislation in Turks and Caicos, the 2015 shift to year-round observance of -04 is now modeled as AST throughout before returning to Eastern Time with US DST in 2018, rather than as maintaining EDT until 2015-11-01. (Thanks to P Chan.) Changes to documentation The zic man page now documents zic's coalescing of transitions when a zone falls back just before DST springs forward. Release 2020d - 2020-10-21 11:24:13 -0700 Briefly: Palestine ends DST earlier than predicted, on 2020-10-24. Changes to past and future timestamps Palestine ends DST on 2020-10-24 at 01:00, instead of 2020-10-31 as previously predicted (thanks to Sharef Mustafa.) Its 2019-10-26 fall-back was at 00:00, not 01:00 (thanks to Steffen Thorsen.) Its 2015-10-23 transition was at 01:00 not 00:00, and its spring 2020 transition was on March 28 at 00:00, not March 27 (thanks to Pierre Cashon.) This affects Asia/Gaza and Asia/Hebron. Assume future spring and fall transitions will be on the Saturday preceding the last Sunday of March and October, respectively. Release 2020c - 2020-10-16 11:15:53 -0700 Briefly: Fiji starts DST later than usual, on 2020-12-20. Changes to future timestamps Fiji will start DST on 2020-12-20, instead of 2020-11-08 as previously predicted. DST will still end on 2021-01-17. (Thanks to Raymond Kumar and Alan Mintz.) Assume for now that the later-than-usual start date is a one-time departure from the recent pattern. Changes to build procedure Rearguard tarballs now contain an empty file pacificnew. Some older downstream software expects this file to exist. (Problem reported by Mike Cullinan.) Release 2020b - 2020-10-06 18:35:04 -0700 Briefly: Revised predictions for Morocco's changes starting in 2023. Canada's Yukon changes to -07 on 2020-11-01, not 2020-03-08. Macquarie Island has stayed in sync with Tasmania since 2011. Casey, Antarctica is at +08 in winter and +11 in summer. zic no longer supports -y, nor the TYPE field of Rules. Changes to future timestamps Morocco's spring-forward after Ramadan is now predicted to occur no sooner than two days after Ramadan, instead of one day. (Thanks to Milamber.) The first altered prediction is for 2023, now predicted to spring-forward on April 30 instead of April 23. Changes to past and future timestamps Casey Station, Antarctica has been using +08 in winter and +11 in summer since 2018. The most recent transition from +08 to +11 was 2020-10-04 00:01. Also, Macquarie Island has been staying in sync with Tasmania since 2011. (Thanks to Steffen Thorsen.) Changes to past and future time zone abbreviations and DST flags Canada's Yukon, represented by America/Whitehorse and America/Dawson, changes its time zone rules from -08/-07 to permanent -07 on 2020-11-01, not on 2020-03-08 as 2020a had it. This change affects only the time zone abbreviation (MST vs PDT) and daylight saving flag for the period between the two dates. (Thanks to Andrew G. Smith.) Changes to past timestamps Correct several transitions for Hungary for 1918/1983. For example, the 1983-09-25 fall-back was at 01:00, not 03:00. (Thanks to Géza Nyáry.) Also, the 1890 transition to standard time was on 11-01, not 10-01 (thanks to Michael Deckers). The 1891 French transition was on March 16, not March 15. The 1911-03-11 French transition was at midnight, not a minute later. Monaco's transitions were on 1892-06-01 and 1911-03-29, not 1891-03-15 and 1911-03-11. (Thanks to Michael Deckers.) Changes to code Support for zic's long-obsolete '-y YEARISTYPE' option has been removed and, with it, so has support for the TYPE field in Rule lines, which is now reserved for compatibility with earlier zic. These features were previously deprecated in release 2015f. (Thanks to Tim Parenti.) zic now defaults to '-b slim' instead of to '-b fat'. zic's new '-l -' and '-p -' options uninstall any existing localtime and posixrules files, respectively. The undocumented and ineffective tzsetwall function has been removed. Changes to build procedure The Makefile now defaults POSIXRULES to '-', so the posixrules feature (obsolete as of 2019b) is no longer installed by default. Changes to documentation and commentary The long-obsolete files pacificnew, systemv, and yearistype.sh have been removed from the distribution. (Thanks to Tim Parenti.) Release 2020a - 2020-04-23 16:03:47 -0700 Briefly: Morocco springs forward on 2020-05-31, not 2020-05-24. Canada's Yukon advanced to -07 year-round on 2020-03-08. America/Nuuk renamed from America/Godthab. zic now supports expiration dates for leap second lists. Changes to future timestamps Morocco's second spring-forward transition in 2020 will be May 31, not May 24 as predicted earlier. (Thanks to Semlali Naoufal.) Adjust future-year predictions to use the first Sunday after the day after Ramadan, not the first Sunday after Ramadan. Canada's Yukon, represented by America/Whitehorse and America/Dawson, advanced to -07 year-round, beginning with its spring-forward transition on 2020-03-08, and will not fall back on 2020-11-01. Although a government press release calls this "permanent Pacific Daylight Saving Time", we prefer MST for consistency with nearby Dawson Creek, Creston, and Fort Nelson. (Thanks to Tim Parenti.) Changes to past timestamps Shanghai observed DST in 1919. (Thanks to Phake Nick.) Changes to timezone identifiers To reflect current usage in English better, America/Godthab has been renamed to America/Nuuk. A backwards-compatibility link remains for the old name. Changes to code localtime.c no longer mishandles timestamps after the last transition in a TZif file with leap seconds and with daylight saving time transitions projected into the indefinite future. For example, with TZ='America/Los_Angeles' with leap seconds, zdump formerly reported a DST transition on 2038-03-14 from 01:59:32.999... to 02:59:33 instead of the correct transition from 01:59:59.999... to 03:00:00. zic -L now supports an Expires line in the leapseconds file, and truncates the TZif output accordingly. This propagates leap second expiration information into the TZif file, and avoids the abovementioned localtime.c bug as well as similar bugs present in many client implementations. If no Expires line is present, zic -L instead truncates the TZif output based on the #expires comment present in leapseconds files distributed by tzdb 2018f and later; however, this usage is obsolescent. For now, the distributed leapseconds file has an Expires line that is commented out, so that the file can be fed to older versions of zic which ignore the commented-out line. Future tzdb distributions are planned to contain a leapseconds file with an Expires line. The configuration macros HAVE_TZNAME and USG_COMPAT should now be set to 1 if the system library supports the feature, and 2 if not. As before, these macros are nonzero if tzcode should support the feature, zero otherwise. The configuration macro ALTZONE now has the same values with the same meaning as HAVE_TZNAME and USG_COMPAT. The code's defense against CRLF in leap-seconds.list is now portable to POSIX awk. (Problem reported by Deborah Goldsmith.) Although the undocumented tzsetwall function is not changed in this release, it is now deprecated in preparation for removal in future releases. Due to POSIX requirements, tzsetwall has not worked for some time. Any code that uses it should instead use tzalloc(NULL) or, if portability trumps thread-safety, should unset the TZ environment variable. Changes to commentary The Îles-de-la-Madeleine and the Listuguj reserve are noted as following America/Halifax, and comments about Yukon's "south" and "north" have been corrected to say "east" and "west". (Thanks to Jeffery Nichols.) Release 2019c - 2019-09-11 08:59:48 -0700 Briefly: Fiji observes DST from 2019-11-10 to 2020-01-12. Norfolk Island starts observing Australian-style DST. Changes to future timestamps Fiji's next DST transitions will be 2019-11-10 and 2020-01-12 instead of 2019-11-03 and 2020-01-19. (Thanks to Raymond Kumar.) Adjust future guesses accordingly. Norfolk Island will observe Australian-style DST starting in spring 2019. The first transition is on 2019-10-06. (Thanks to Kyle Czech and Michael Deckers.) Changes to past timestamps Many corrections to time in Turkey from 1940 through 1985. (Thanks to Oya Vulaş via Alois Treindl, and to Kıvanç Yazan.) The Norfolk Island 1975-03-02 transition was at 02:00 standard time, not 02:00 DST. (Thanks to Michael Deckers.) South Korea observed DST from 1948 through 1951. Although this info was supposed to appear in release 2014j, a typo inadvertently suppressed the change. (Thanks to Alois Treindl.) Detroit observed DST in 1967 and 1968 following the US DST rules, except that its 1967 DST began on June 14 at 00:01. (Thanks to Alois Treindl for pointing out that the old data entries were probably wrong.) Fix several errors in pre-1970 transitions in Perry County, IN. (Thanks to Alois Treindl for pointing out the 1967/9 errors.) Edmonton did not observe DST in 1967 or 1969. In 1946 Vancouver ended DST on 09-29 not 10-13, and Vienna ended DST on 10-07 not 10-06. In 1945 Königsberg (now Kaliningrad) switched from +01/+02 to +02/+03 on 04-10 not 01-01, and its +02/+03 is abbreviated EET/EEST, not CET/CEST. (Thanks to Alois Treindl.) In 1946 Königsberg switched to +03 on 04-07 not 01-01. In 1946 Louisville switched from CST to CDT on 04-28 at 00:01, not 01-01 at 00:00. (Thanks to Alois Treindl and Michael Deckers.) Also, it switched from CST to CDT on 1950-04-30, not 1947-04-27. The 1892-05-01 transition in Brussels was at 00:17:30, not at noon. (Thanks to Michael Deckers.) Changes to past time zone abbreviations and DST flags Hong Kong Winter Time, observed from 1941-10-01 to 1941-12-25, is now flagged as DST and is abbreviated HKWT not HKT. Changes to code leapseconds.awk now relies only on its input data, rather than also relying on its comments. (Inspired by code from Dennis Ferguson and Chris Woodbury.) The code now defends against CRLFs in leap-seconds.list. (Thanks to Brian Inglis and Chris Woodbury.) Changes to documentation and commentary theory.html discusses leap seconds. (Thanks to Steve Summit.) Nashville's newspapers dueled about the time of day in the 1950s. (Thanks to John Seigenthaler.) Liechtenstein observed Swiss DST in 1941/2. (Thanks to Alois Treindl.) Release 2019b - 2019-07-01 00:09:53 -0700 Briefly: Brazil no longer observes DST. 'zic -b slim' outputs smaller TZif files; please try it out. Palestine's 2019 spring-forward transition was on 03-29, not 03-30. Changes to future timestamps Brazil has canceled DST and will stay on standard time indefinitely. (Thanks to Steffen Thorsen, Marcus Diniz, and Daniel Soares de Oliveira.) Predictions for Morocco now go through 2087 instead of 2037, to work around a problem on newlib when using TZif files output by zic 2019a or earlier. (Problem reported by David Gauchard.) Changes to past and future timestamps Palestine's 2019 spring transition was 03-29 at 00:00, not 03-30 at 01:00. (Thanks to Sharef Mustafa and Even Scharning.) Guess future transitions to be March's last Friday at 00:00. Changes to past timestamps Hong Kong's 1941-06-15 spring-forward transition was at 03:00, not 03:30. Its 1945 transition from JST to HKT was on 11-18 at 02:00, not 09-15 at 00:00. In 1946 its spring-forward transition was on 04-21 at 00:00, not the previous day at 03:30. From 1946 through 1952 its fall-back transitions occurred at 04:30, not at 03:30. In 1947 its fall-back transition was on 11-30, not 12-30. (Thanks to P Chan.) Changes to past time zone abbreviations Italy's 1866 transition to Rome Mean Time was on December 12, not September 22. This affects only the time zone abbreviation for Europe/Rome between those dates. (Thanks to Stephen Trainor and Luigi Rosa.) Changes affecting metadata only Add info about the Crimea situation in zone1970.tab and zone.tab. (Problem reported by Serhii Demediuk.) Changes to code zic's new -b option supports a way to control data bloat and to test for year-2038 bugs in software that reads TZif files. 'zic -b fat' and 'zic -b slim' generate larger and smaller output; for example, changing from fat to slim shrinks the Europe/London file from 3648 to 1599 bytes, saving about 56%. Fat and slim files represent the same set of timestamps and use the same TZif format as documented in tzfile(5) and in Internet RFC 8536. Fat format attempts to work around bugs or incompatibilities in older software, notably software that mishandles 64-bit TZif data or uses obsolete TZ strings like "EET-2EEST" that lack DST rules. Slim format is more efficient and does not work around 64-bit bugs or obsolete TZ strings. Currently zic defaults to fat format unless you compile with -DZIC_BLOAT_DEFAULT=\"slim\"; this out-of-the-box default is intended to change in future releases as the buggy software often mishandles timestamps anyway. zic no longer treats a set of rules ending in 2037 specially. Previously, zic assumed that such a ruleset meant that future timestamps could not be predicted, and therefore omitted a POSIX-like TZ string in the TZif output. The old behavior is no longer needed for current tzdata, and caused problems with newlib when used with older tzdata (reported by David Gauchard). zic no longer generates some artifact transitions. For example, Europe/London no longer has a no-op transition in January 1996. Changes to build procedure tzdata.zi now assumes zic 2017c or later. This shrinks tzdata.zi by a percent or so. Changes to documentation and commentary The Makefile now documents the POSIXRULES macro as being obsolete, and similarly, zic's -p POSIXRULES option is now documented as being obsolete. Although the POSIXRULES feature still exists and works as before, in practice it is rarely used for its intended purpose, and it does not work either in the default reference implementation (for timestamps after 2037) or in common implementations such as GNU/Linux (for contemporary timestamps). Since POSIXRULES was designed primarily as a temporary transition facility for System V platforms that died off decades ago, it is being decommissioned rather than institutionalized. New info on Bonin Islands and Marcus (thanks to Wakaba and Phake Nick). Release 2019a - 2019-03-25 22:01:33 -0700 Briefly: Palestine "springs forward" on 2019-03-30 instead of 2019-03-23. Metlakatla "fell back" to rejoin Alaska Time on 2019-01-20 at 02:00. Changes to past and future timestamps Palestine will not start DST until 2019-03-30, instead of 2019-03-23 as previously predicted. Adjust our prediction by guessing that spring transitions will be between 24 and 30 March, which matches recent practice since 2016. (Thanks to Even Scharning and Tim Parenti.) Metlakatla ended its observance of Pacific standard time, rejoining Alaska Time, on 2019-01-20 at 02:00. (Thanks to Ryan Stanley and Tim Parenti.) Changes to past timestamps Israel observed DST in 1980 (08-02/09-13) and 1984 (05-05/08-25). (Thanks to Alois Treindl and Isaac Starkman.) Changes to time zone abbreviations Etc/UCT is now a backward-compatibility link to Etc/UTC, instead of being a separate zone that generates the abbreviation "UCT", which nowadays is typically a typo. (Problem reported by Isiah Meadows.) Changes to code zic now has an -r option to limit the time range of output data. For example, 'zic -r @1000000000' limits the output data to timestamps starting 1000000000 seconds after the Epoch. This helps shrink output size and can be useful for applications not needing the full timestamp history, such as TZDIST truncation; see Internet RFC 8536 section 5.1. (Inspired by a feature request from Christopher Wong, helped along by bug reports from Wong and from Tim Parenti.) Changes to documentation Mention Internet RFC 8536 (February 2019), which documents TZif. tz-link.html now cites tzdata-meta <https://tzdata-meta.timtimeonline.com/>. Release 2018i - 2018-12-30 11:05:43 -0800 Briefly: São Tomé and Príncipe switches from +01 to +00 on 2019-01-01. Changes to future timestamps Due to a change in government, São Tomé and Príncipe switches back from +01 to +00 on 2019-01-01 at 02:00. (Thanks to Vadim Nasardinov and Michael Deckers.) Release 2018h - 2018-12-23 17:59:32 -0800 Briefly: Qyzylorda, Kazakhstan moved from +06 to +05 on 2018-12-21. New zone Asia/Qostanay because Qostanay, Kazakhstan didn't move. Metlakatla, Alaska observes PST this winter only. Guess Morocco will continue to adjust clocks around Ramadan. Add predictions for Iran from 2038 through 2090. Changes to future timestamps Guess that Morocco will continue to fall back just before and spring forward just after Ramadan, the practice since 2012. (Thanks to Maamar Abdelkader.) This means Morocco will observe negative DST during Ramadan in main and vanguard formats, and in rearguard format it stays in the +00 timezone and observes ordinary DST in all months other than Ramadan. As before, extend this guesswork to the year 2037. As a consequence, Morocco is scheduled to observe three DST transitions in some Gregorian years (e.g., 2033) due to the mismatch between the Gregorian and Islamic calendars. The table of exact transitions for Iranian DST has been extended. It formerly cut off before the year 2038 in a nod to 32-bit time_t. It now cuts off before 2091 as there is doubt about how the Persian calendar will treat 2091. This change predicts DST transitions in 2038-9, 2042-3, and 2046-7 to occur one day later than previously predicted. As before, post-cutoff transitions are approximated. Changes to past and future timestamps Qyzylorda (aka Kyzylorda) oblast in Kazakhstan moved from +06 to +05 on 2018-12-21. This is a zone split as Qostanay (aka Kostanay) did not switch, so create a zone Asia/Qostanay. Metlakatla moved from Alaska to Pacific standard time on 2018-11-04. It did not change clocks that day and remains on -08 this winter. (Thanks to Ryan Stanley.) It will revert to the usual Alaska rules next spring, so this change affects only timestamps from 2018-11-04 through 2019-03-10. Change to past timestamps Kwajalein's 1993-08-20 transition from -12 to +12 was at 24:00, not 00:00. I transcribed the time incorrectly from Shanks. (Thanks to Phake Nick.) Nauru's 1979 transition was on 02-10 at 02:00, not 05-01 at 00:00. (Thanks to Phake Nick.) Guam observed DST irregularly from 1959 through 1977. (Thanks to Phake Nick.) Hong Kong observed DST in 1941 starting 06-15 (not 04-01), then on 10-01 changed standard time to +08:30 (not +08). Its transition back to +08 after WWII was on 1945-09-15, not the previous day. Its 1904-10-30 change took effect at 01:00 +08 (not 00:00 LMT). (Thanks to Phake Nick, Steve Allen, and Joseph Myers.) Also, its 1952 fallback was on 11-02 (not 10-25). This release contains many changes to timestamps before 1946 due to Japanese possession or occupation of Pacific/Chuuk, Pacific/Guam, Pacific/Kosrae, Pacific/Kwajalein, Pacific/Majuro, Pacific/Nauru, Pacific/Palau, and Pacific/Pohnpei. (Thanks to Phake Nick.) Assume that the Spanish East Indies was like the Philippines and observed American time until the end of 1844. This affects Pacific/Chuuk, Pacific/Kosrae, Pacific/Palau, and Pacific/Pohnpei. Changes to past tm_isdst flags For the recent Morocco change, the tm_isdst flag should be 1 from 2018-10-27 00:00 to 2018-10-28 03:00. (Thanks to Michael Deckers.) Give a URL to the official decree. (Thanks to Matt Johnson.) Release 2018g - 2018-10-26 22:22:45 -0700 Briefly: Morocco switches to permanent +01 on 2018-10-28. Changes to future timestamps Morocco switches from +00/+01 to permanent +01 effective 2018-10-28, so its clocks will not fall back as previously scheduled. (Thanks to Mohamed Essedik Najd and Brian Inglis.) Changes to code When generating TZif files with leap seconds, zic no longer uses a format that trips up older 32-bit clients, fixing a bug introduced in 2018f. (Reported by Daniel Fischer.) Also, the zic workaround for QTBUG-53071 now also works for TZif files with leap seconds. The translator to rearguard format now rewrites the line "Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S" to "Rule Japan 1948 1951 - Sep Sun>=9 1:00 0 S". This caters to zic before 2007 and to Oracle TZUpdater 2.2.0 and earlier. (Reported by Christos Zoulas.) Changes to past time zone abbreviations Change HDT to HWT/HPT for WWII-era abbreviations in Hawaii. This reverts to 2011h, as the abbreviation change in 2011i was likely inadvertent. Changes to documentation tzfile.5 has new sections on interoperability issues. Release 2018f - 2018-10-18 00:14:18 -0700 Briefly: Volgograd moves from +03 to +04 on 2018-10-28. Fiji ends DST 2019-01-13, not 2019-01-20. Most of Chile changes DST dates, effective 2019-04-06. Changes to future timestamps Volgograd moves from +03 to +04 on 2018-10-28 at 02:00. (Thanks to Alexander Fetisov and Stepan Golosunov.) Fiji ends DST 2019-01-13 instead of the 2019-01-20 previously predicted. (Thanks to Raymond Kumar.) Adjust future predictions accordingly. Most of Chile will end DST on the first Saturday in April at 24:00 mainland time, and resume DST on the first Saturday in September at 24:00 mainland time. The changes are effective from 2019-04-06, and do not affect the Magallanes region modeled by America/Punta_Arenas. (Thanks to Juan Correa and Tim Parenti.) Adjust future predictions accordingly. Changes to past timestamps The 2018-05-05 North Korea 30-minute time zone change took place at 23:30 the previous day, not at 00:00 that day. China's 1988 spring-forward transition was on April 17, not April 10. Its DST transitions in 1986/91 were at 02:00, not 00:00. (Thanks to P Chan.) Fix several issues for Macau before 1992. Macau's pre-1904 LMT was off by 10 s. Macau switched to +08 in 1904 not 1912, and temporarily switched to +09/+10 during World War II. Macau observed DST in 1942/79, not 1961/80, and there were several errors for transition times and dates. (Thanks to P Chan.) The 1948-1951 fallback transitions in Japan were at 25:00 on September's second Saturday, not at 24:00. (Thanks to Phake Nick.) zic turns this into 01:00 on the day after September's second Saturday, which is the best that POSIX or C platforms can do. Incorporate 1940-1949 Asia/Shanghai DST transitions from a 2014 paper by Li Yu, replacing more-questionable data from Shanks. Changes to time zone abbreviations Use "PST" and "PDT" for Philippine time. (Thanks to Paul Goyette.) Changes to code zic now always generates TZif files where time type 0 is used for timestamps before the first transition. This simplifies the reading of TZif files and should not affect behavior of existing TZif readers because the same set of time types is used; only their internal indexes may have changed. This affects only the legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and EET, which previously used nonzero types for these timestamps. Because of the type 0 change, zic no longer outputs a dummy transition at time -2**59 (before the Big Bang), as clients should no longer need this to handle historical timestamps correctly. This reverts a change introduced in 2013d and shrinks most TZif files by a few bytes. zic now supports negative time-of-day in Rule and Leap lines, e.g., "Rule X min max - Apr lastSun -6:00 1:00 -" means the transition occurs at 18:00 on the Saturday before the last Sunday in April. This behavior was documented in 2018a but the code did not entirely match the documentation. localtime.c no longer requires at least one time type in TZif files that lack transitions or have a POSIX-style TZ string. This future-proofs the code against possible future extensions to the format that would allow TZif files with POSIX-style TZ strings and without transitions or time types. A read-access subscript error in localtime.c has been fixed. It could occur only in TZif files with timecnt == 0, something that does not happen in practice now but could happen in future versions. localtime.c no longer ignores TZif POSIX-style TZ strings that specify only standard time. Instead, these TZ strings now override the default time type for timestamps after the last transition (or for all timestamps if there are no transitions), just as DST strings specifying DST have always done. leapseconds.awk now outputs "#updated" and "#expires" comments, and supports leap seconds at the ends of months other than June and December. (Inspired by suggestions from Chris Woodbury.) Changes to documentation New restrictions: A Rule name must start with a character that is neither an ASCII digit nor "-" nor "+", and an unquoted name should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~". The latter restriction makes room for future extensions (a possibility noted by Tom Lane). tzfile.5 now documents what time types apply before the first and after the last transition, if any. Documentation now uses the spelling "timezone" for a TZ setting that determines timestamp history, and "time zone" for a geographic region currently sharing the same standard time. The name "TZif" is now used for the tz binary data format. tz-link.htm now mentions the A0 TimeZone Migration utilities. (Thanks to Aldrin Martoq for the link.) Changes to build procedure New 'make' target 'rearguard_tarballs' to build the rearguard tarball only. This is a convenience on platforms that lack lzip if you want to build the rearguard tarball. (Problem reported by Deborah Goldsmith.) tzdata.zi is now more stable from release to release. (Problem noted by Tom Lane.) It is also a bit shorter. tzdata.zi now can contain comment lines documenting configuration information, such as which data format was selected, which input files were used, and how leap seconds are treated. (Problems noted by Lester Caine and Brian Inglis.) If the Makefile defaults are used these comment lines are absent, for backward compatibility. A redistributor intending to alter its copy of the files should also append "-LABEL" to the 'version' file's first line, where "LABEL" identifies the redistributor's change. Release 2018e - 2018-05-01 23:42:51 -0700 Briefly: North Korea switches back to +09 on 2018-05-05. The main format uses negative DST again, for Ireland etc. 'make tarballs' now also builds a rearguard tarball. New 's' and 'd' suffixes in SAVE columns of Rule and Zone lines. Changes to past and future timestamps North Korea switches back from +0830 to +09 on 2018-05-05. (Thanks to Kang Seonghoon, Arthur David Olson, Seo Sanghyeon, and Tim Parenti.) Bring back the negative-DST changes of 2018a, except be more compatible with data parsers that do not support negative DST. Also, this now affects historical timestamps in Namibia and the former Czechoslovakia, not just Ireland. The main format now uses negative DST to model timestamps in Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and Africa/Windhoek (1994/2017). This does not affect UT offsets, only time zone abbreviations and the tm_isdst flag. Also, this does not affect rearguard or vanguard formats; effectively the main format now uses vanguard instead of rearguard format. Data parsers that do not support negative DST can still use data from the rearguard tarball described below. Changes to build procedure The command 'make tarballs' now also builds the tarball tzdataVERSION-rearguard.tar.gz, which is like tzdataVERSION.tar.gz except that it uses rearguard format intended for trailing-edge data parsers. Changes to data format and to code The SAVE column of Rule and Zone lines can now have an 's' or 'd' suffix, which specifies whether the adjusted time is standard time or daylight saving time. If no suffix is given, daylight saving time is used if and only if the SAVE column is nonzero; this is the longstanding behavior. Although this new feature is not used in tzdata, it could be used to specify the legal time in Namibia 1994-2017, as opposed to the popular time (see below). Changes to past timestamps From 1994 through 2017 Namibia observed DST in winter, not summer. That is, it used negative DST, as Ireland still does. This change does not affect UTC offsets; it affects only the tm_isdst flag and the abbreviation used during summer, which is now CAT, not WAST. Although (as noted by Michael Deckers) summer and winter time were both simply called "standard time" in Namibian law, in common practice winter time was considered to be DST (as noted by Stephen Colebourne). The full effect of this change is only in vanguard and main format; in rearguard format, the tm_isdst flag is still zero in winter and nonzero in summer. In 1946/7 Czechoslovakia also observed negative DST in winter. The full effect of this change is only in vanguard and main formats; in rearguard format, it is modeled as plain GMT without daylight saving. Also, the dates of some 1944/5 DST transitions in Czechoslovakia have been changed. Release 2018d - 2018-03-22 07:05:46 -0700 Briefly: Palestine starts DST a week earlier in 2018. Add support for vanguard and rearguard data consumers. Add subsecond precision to source data format, though not to data. Changes to future timestamps In 2018, Palestine starts DST on March 24, not March 31. Adjust future predictions accordingly. (Thanks to Sharef Mustafa.) Changes to past and future timestamps Casey Station in Antarctica changed from +11 to +08 on 2018-03-11 at 04:00. (Thanks to Steffen Thorsen.) Changes to past timestamps Historical transitions for Uruguay, represented by America/Montevideo, have been updated per official legal documents, replacing previous data mainly originating from the inventions of Shanks & Pottenger. This has resulted in adjustments ranging from 30 to 90 minutes in either direction over at least two dozen distinct periods ranging from one day to several years in length. A mere handful of pre-1991 transitions are unaffected; data since then has come from more reliable contemporaneous reporting. These changes affect various timestamps in 1920-1923, 1936, 1939, 1942-1943, 1959, 1966-1970, 1972, 1974-1980, and 1988-1990. Additionally, Uruguay's pre-standard-time UT offset has been adjusted westward by 7 seconds, from UT-03:44:44 to UT-03:44:51, to match the location of the Observatory of the National Meteorological Institute in Montevideo. (Thanks to Jeremie Bonjour, Tim Parenti, and Michael Deckers.) East Kiribati skipped New Year's Eve 1994, not New Year's Day 1995. (Thanks to Kerry Shetline.) Fix the 1912-01-01 transition for Portugal and its colonies. This transition was at 00:00 according to the new UT offset, not according to the old one. Also assume that Cape Verde switched on the same date as the rest, not in 1907. This affects Africa/Bissau, Africa/Sao_Tome, Asia/Macau, Atlantic/Azores, Atlantic/Cape_Verde, Atlantic/Madeira, and Europe/Lisbon. (Thanks to Michael Deckers.) Fix an off-by-1 error for pre-1913 timestamps in Jamaica and in Turks & Caicos. Changes to past time zone abbreviations MMT took effect in Uruguay from 1908-06-10, not 1898-06-28. There is no clock change associated with the transition. Changes to build procedure The new DATAFORM macro in the Makefile lets the installer choose among three source data formats. The idea is to lessen downstream disruption when data formats are improved. * DATAFORM=vanguard installs from the latest, bleeding-edge format. DATAFORM=main (the default) installs from the format used in the 'africa' etc. files. DATAFORM=rearguard installs from a trailing-edge format. Eventually, elements of today's vanguard format should move to the main format, and similarly the main format's features should eventually move to the rearguard format. * In the current version, the main and rearguard formats are identical and match that of 2018c, so this change does not affect default behavior. The vanguard format currently contains one feature not in the main format: negative SAVE values. This improves support for Ireland, which uses Irish Standard Time (IST, UTC+01) in summer and GMT (UTC) in winter. tzcode has supported negative SAVE values for decades, and this feature should move to the main format soon. However, it will not move to the rearguard format for quite some time because some downstream parsers do not support it. * The build procedure constructs three files vanguard.zi, main.zi, and rearguard.zi, one for each format. Although the files represent essentially the same data, they may have minor discrepancies that users are not likely to notice. The files are intended for downstream data consumers and are not installed. Zoneinfo parsers that do not support negative SAVE values should start using rearguard.zi, so that they will be unaffected when the negative-DST feature moves from vanguard to main. Bleeding-edge Zoneinfo parsers that support the new features already can use vanguard.zi; in this respect, current tzcode is bleeding-edge. The Makefile should now be safe for parallelized builds, and 'make -j to2050new.tzs' is now much faster on a multiprocessor host with GNU Make. When built with -DSUPPRESS_TZDIR, the tzcode library no longer prepends TZDIR/ to file names that do not begin with '/'. This is not recommended for general use, due to its security implications. (From a suggestion by Manuela Friedrich.) Changes to code zic now accepts subsecond precision in expressions like 00:19:32.13, which is approximately the legal time of the Netherlands from 1835 to 1937. However, because it is questionable whether the few recorded uses of non-integer offsets had subsecond precision in practice, there are no plans for tzdata to use this feature. (Thanks to Steve Allen for pointing out the limitations of historical data in this area.) The code is a bit more portable to MS-Windows. Installers can compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that reserve identifiers like 'localtime'. (Thanks to Manuela Friedrich.) Changes to documentation and commentary theory.html now outlines tzdb's extensions to POSIX's model for civil time, and has a section "POSIX features no longer needed" that lists POSIX API components that are now vestigial. (From suggestions by Steve Summit.) It also better distinguishes time zones from tz regions. (From a suggestion by Guy Harris.) Commentary is now more consistent about using the phrase "daylight saving time", to match the C name tm_isdst. Daylight saving time need not occur in summer, and need not have a positive offset from standard time. Commentary about historical transitions in Uruguay has been expanded with links to many relevant legal documents. (Thanks to Tim Parenti.) Commentary now uses some non-ASCII characters with Unicode value less than U+0100, as they can be useful and should work even with older editors such as XEmacs. Release 2018c - 2018-01-22 23:00:44 -0800 Briefly: Revert Irish changes that relied on negative SAVE values. Changes to tm_isdst Revert the 2018a change to Europe/Dublin. As before, this change does not affect UT offsets or abbreviations; it affects only whether timestamps are considered to be standard time or daylight-saving time, as expressed in the tm_isdst flag of C's struct tm type. This reversion is intended to be a temporary workaround for problems discovered with downstream uses of releases 2018a and 2018b, which implemented Irish time by using negative SAVE values in the Eire rules of the 'europe' file. Although negative SAVE values have been part of tzcode for many years and are supported by many platforms, they were not documented before 2018a and ICU and OpenJDK do not currently support them. A mechanism to export data to platforms lacking support for negative DST is planned to be developed before the change is reapplied. (Problems reported by Deborah Goldsmith and Stephen Colebourne.) Changes to past timestamps Japanese DST transitions (1948-1951) were Sundays at 00:00, not Saturdays or Sundays at 02:00. (Thanks to Takayuki Nikai.) Changes to build procedure The build procedure now works around mawk 1.3.3's lack of support for character class expressions. (Problem reported by Ohyama.) Release 2018b - 2018-01-17 23:24:48 -0800 Briefly: Fix a packaging problem in tz2018a, which was missing 'pacificnew'. Changes to build procedure The distribution now contains the file 'pacificnew' again. This file was inadvertently omitted in the 2018a distribution. (Problem reported by Matias Fonzo.) Release 2018a - 2018-01-12 22:29:21 -0800 Briefly: São Tomé and Príncipe switched from +00 to +01. Brazil's DST will now start on November's first Sunday. Ireland's standard time is now in the summer, not the winter. Use Debian-style installation locations, instead of 4.3BSD-style. New zic option -t. Changes to past and future timestamps São Tomé and Príncipe switched from +00 to +01 on 2018-01-01 at 01:00. (Thanks to Steffen Thorsen and Michael Deckers.) Changes to future timestamps Starting in 2018 southern Brazil will begin DST on November's first Sunday instead of October's third Sunday. (Thanks to Steffen Thorsen.) Changes to past timestamps A discrepancy of 4 s in timestamps before 1931 in South Sudan has been corrected. The 'backzone' and 'zone.tab' files did not agree with the 'africa' and 'zone1970.tab' files. (Problem reported by Michael Deckers.) The abbreviation invented for Bolivia Summer Time (1931-2) is now BST instead of BOST, to be more consistent with the convention used for Latvian Summer Time (1918-9) and for British Summer Time. Changes to tm_isdst Change Europe/Dublin so that it observes Irish Standard Time (UT +01) in summer and GMT (as negative daylight-saving) in winter, instead of observing standard time (GMT) in winter and Irish Summer Time (UT +01) in summer. This change does not affect UT offsets or abbreviations; it affects only whether timestamps are considered to be standard time or daylight-saving time, as expressed in the tm_isdst flag of C's struct tm type. (Discrepancy noted by Derick Rethans.) Changes to build procedure The default installation locations have been changed to mostly match Debian circa 2017, instead of being designed as an add-on to 4.3BSD circa 1986. This affects the Makefile macros TOPDIR, TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR, USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor locations more precisely. (This responds to suggestions from Brian Inglis and from Steve Summit.) The default installation procedure no longer creates the backward-compatibility link US/Pacific-New, which causes confusion during user setup (e.g., see Debian bug 815200). Use 'make BACKWARD="backward pacificnew"' to create the link anyway, for now. Eventually we plan to remove the link entirely. tzdata.zi now contains a version-number comment. (Suggested by Tom Lane.) The Makefile now quotes values like BACKWARD more carefully when passing them to the shell. (Problem reported by Zefram.) Builders no longer need to specify -DHAVE_SNPRINTF on platforms that have snprintf and use pre-C99 compilers. (Problem reported by Jon Skeet.) Changes to code zic has a new option -t FILE that specifies the location of the file that determines local time when TZ is unset. The default for this location can be configured via the new TZDEFAULT makefile macro, which defaults to /etc/localtime. Diagnostics and commentary now distinguish UT from UTC more carefully; see theory.html for more information about UT vs UTC. zic has been ported to GCC 8's -Wstringop-truncation option. (Problem reported by Martin Sebor.) Changes to documentation and commentary The zic man page now documents the longstanding behavior that times and years can be out of the usual range, with negative times counting backwards from midnight and with year 0 preceding year 1. (Problem reported by Michael Deckers.) The theory.html file now mentions the POSIX limit of six chars per abbreviation, and lists alphabetic abbreviations used. The files tz-art.htm and tz-link.htm have been renamed to tz-art.html and tz-link.html, respectively, for consistency with other file names and to simplify web server configuration. Release 2017c - 2017-10-20 14:49:34 -0700 Briefly: Northern Cyprus switches from +03 to +02/+03 on 2017-10-29. Fiji ends DST 2018-01-14, not 2018-01-21. Namibia switches from +01/+02 to +02 on 2018-04-01. Sudan switches from +03 to +02 on 2017-11-01. Tonga likely switches from +13/+14 to +13 on 2017-11-05. Turks & Caicos switches from -04 to -05/-04 on 2018-11-04. A new file tzdata.zi now holds a small text copy of all data. The zic input format has been regularized slightly. Changes to future timestamps Northern Cyprus has decided to resume EU rules starting 2017-10-29, thus reinstituting winter time. Fiji ends DST 2018-01-14 instead of the 2018-01-21 previously predicted. (Thanks to Dominic Fok.) Adjust future predictions accordingly. Namibia will switch from +01 with DST to +02 all year on 2017-09-03 at 02:00. This affects UT offsets starting 2018-04-01 at 02:00. (Thanks to Steffen Thorsen.) Sudan will switch from +03 to +02 on 2017-11-01. (Thanks to Ahmed Atyya and Yahia Abdalla.) South Sudan is not switching, so Africa/Juba is no longer a link to Africa/Khartoum. Tonga has likely ended its experiment with DST, and will not adjust its clocks on 2017-11-05. Although Tonga has not announced whether it will continue to observe DST, the IATA is assuming that it will not. (Thanks to David Wade.) Turks & Caicos will switch from -04 all year to -05 with US DST on 2018-03-11 at 03:00. This affects UT offsets starting 2018-11-04 at 02:00. (Thanks to Steffen Thorsen.) Changes to past timestamps Namibia switched from +02 to +01 on 1994-03-21, not 1994-04-03. (Thanks to Arthur David Olson.) Detroit did not observe DST in 1967. Use railway time for Asia/Kolkata before 1941, by switching to Madras local time (UT +052110) in 1870, then to IST (UT +0530) in 1906. Also, treat 1941-2's +0630 as DST, like 1942-5. Europe/Dublin's 1946 and 1947 fallback transitions occurred at 02:00 standard time, not 02:00 DST. (Thanks to Michael Deckers.) Pacific/Apia and Pacific/Pago_Pago switched from Antipodean to American time in 1892, not 1879. (Thanks to Michael Deckers.) Adjust the 1867 transition in Alaska to better reflect the historical record, by changing it to occur on 1867-10-18 at 15:30 Sitka time rather than at the start of 1867-10-17 local time. Although strictly speaking this is accurate only for Sitka, the rest of Alaska's blanks need to be filled in somehow. Fix off-by-one errors in UT offsets for Adak and Nome before 1867. (Thanks to Michael Deckers.) Add 7 s to the UT offset in Asia/Yangon before 1920. Changes to zone names Remove Canada/East-Saskatchewan from the 'backward' file, as it exceeded the 14-character limit and was an unused misnomer anyway. Changes to build procedure To support applications that prefer to read time zone data in text form, two zic input files tzdata.zi and leapseconds are now installed by default. The commands 'zic tzdata.zi' and 'zic -L leapseconds tzdata.zi' can reproduce the tzdata binary files without and with leap seconds, respectively. To prevent these two new files from being installed, use 'make TZDATA_TEXT=', and to suppress leap seconds from the tzdata text installation, use 'make TZDATA_TEXT=tzdata.zi'. 'make BACKWARD=' now suppresses backward-compatibility names like 'US/Pacific' that are defined in the 'backward' and 'pacificnew' files. 'make check' now works on systems that lack a UTF-8 locale, or that lack the nsgmls program. Set UTF8_LOCALE to configure the name of a UTF-8 locale, if you have one. Y2K runtime checks are no longer enabled by default. Add -DDEPRECATE_TWO_DIGIT_YEARS to CFLAGS to enable them, instead of adding -DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU to disable them. (New name suggested by Brian Inglis.) The build procedure for zdump now works on AIX 7.1. (Problem reported by Kees Dekker.) Changes to code zic and the reference runtime now reject multiple leap seconds within 28 days of each other, or leap seconds before the Epoch. As a result, support for double leap seconds, which was obsolescent and undocumented, has been removed. Double leap seconds were an error in the C89 standard; they have never existed in civil timekeeping. (Thanks to Robert Elz and Bradley White for noticing glitches in the code that uncovered this problem.) zic now warns about use of the obsolescent and undocumented -y option, and about use of the obsolescent TYPE field of Rule lines. zic now allows unambiguous abbreviations like "Sa" and "Su" for weekdays; formerly it rejected them due to a bug. Conversely, zic no longer considers non-prefixes to be abbreviations; for example, it no longer accepts "lF" as an abbreviation for "lastFriday". Also, zic warns about the undocumented usage with a "last-" prefix, e.g., "last-Fri". Similarly, zic now accepts the unambiguous abbreviation "L" for "Link" in ordinary context and for "Leap" in leap-second context. Conversely, zic no longer accepts non-prefixes such as "La" as abbreviations for words like "Leap". zic no longer accepts leap second lines in ordinary input, or ordinary lines in leap second input. Formerly, zic sometimes warned about this undocumented usage and handled it incorrectly. The new macro HAVE_TZNAME governs whether the tzname external variable is exported, instead of USG_COMPAT. USG_COMPAT now governs only the external variables "timezone" and "daylight". This change is needed because the three variables are not in the same category: although POSIX requires tzname, it specifies the other two variables as optional. Also, USG_COMPAT is now 1 or 0: if not defined, the code attempts to guess it from other macros. localtime.c and difftime.c no longer require stdio.h, and .c files other than zic.c no longer require sys/wait.h. zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.) Calculation of time_t extrema works around a bug in GCC 4.8.4 (Reported by Stan Shebs and Joseph Myers.) zic.c no longer mistranslates formats of line numbers in non-English locales. (Problem reported by Benno Schulenberg.) Several minor changes have been made to the code to make it a bit easier to port to MS-Windows and Solaris. (Thanks to Kees Dekker for reporting the problems.) Changes to documentation and commentary The two new files 'theory.html' and 'calendars' contain the contents of the removed file 'Theory'. The goal is to document tzdb theory more accessibly. The zic man page now documents abbreviation rules. tz-link.htm now covers how to apply tzdata changes to clients. (Thanks to Jorge Fábregas for the AIX link.) It also mentions MySQL. The leap-seconds.list URL has been updated to something that is more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.) Release 2017b - 2017-03-17 07:30:38 -0700 Briefly: Haiti has resumed DST. Changes to past and future timestamps Haiti resumed observance of DST in 2017. (Thanks to Steffen Thorsen.) Changes to past timestamps Liberia changed from -004430 to +00 on 1972-01-07, not 1972-05-01. Use "MMT" to abbreviate Liberia's time zone before 1972, as "-004430" is one byte over the POSIX limit. (Problem reported by Derick Rethans.) Changes to code The reference localtime implementation now falls back on the current US daylight-saving transition rules rather than the 1987-2006 rules. This fallback occurs only when (1) the TZ environment variable has a value like "AST4ADT" that asks for daylight saving time but does not specify the rules, (2) there is no file by that name, and (3) the TZDEFRULES file cannot be loaded. (Thanks to Tom Lane.) Release 2017a - 2017-02-28 00:05:36 -0800 Briefly: Southern Chile moves from -04/-03 to -03, and Mongolia discontinues DST. Changes to future timestamps Mongolia no longer observes DST. (Thanks to Ganbold Tsagaankhuu.) Chile's Region of Magallanes moves from -04/-03 to -03 year-round. Its clocks diverge from America/Santiago starting 2017-05-13 at 23:00, hiving off a new zone America/Punta_Arenas. Although the Chilean government says this change expires in May 2019, for now assume it's permanent. (Thanks to Juan Correa and Deborah Goldsmith.) This also affects Antarctica/Palmer. Changes to past timestamps Fix many entries for historical timestamps for Europe/Madrid before 1979, to agree with tables compiled by Pere Planesas of the National Astronomical Observatory of Spain. As a side effect, this changes some timestamps for Africa/Ceuta before 1929, which are probably guesswork anyway. (Thanks to Steve Allen and Pierpaolo Bernardi for the heads-ups, and to Michael Deckers for correcting the 1901 transition.) Ecuador observed DST from 1992-11-28 to 1993-02-05. (Thanks to Alois Treindl.) Asia/Atyrau and Asia/Oral were at +03 (not +04) before 1930-06-21. (Thanks to Stepan Golosunov.) Changes to past and future time zone abbreviations Switch to numeric time zone abbreviations for South America, as part of the ongoing project of removing invented abbreviations. This avoids the need to invent an abbreviation for the new Chilean new zone. Similarly, switch from invented to numeric time zone abbreviations for Afghanistan, American Samoa, the Azores, Bangladesh, Bhutan, the British Indian Ocean Territory, Brunei, Cape Verde, Chatham Is, Christmas I, Cocos (Keeling) Is, Cook Is, Dubai, East Timor, Eucla, Fiji, French Polynesia, Greenland, Indochina, Iran, Iraq, Kiribati, Lord Howe, Macquarie, Malaysia, the Maldives, Marshall Is, Mauritius, Micronesia, Mongolia, Myanmar, Nauru, Nepal, New Caledonia, Niue, Norfolk I, Palau, Papua New Guinea, the Philippines, Pitcairn, Qatar, Réunion, St Pierre & Miquelon, Samoa, Saudi Arabia, Seychelles, Singapore, Solomon Is, Tokelau, Tuvalu, Wake, Vanuatu, Wallis & Futuna, and Xinjiang; for 20-minute daylight saving time in Ghana before 1943; for half-hour daylight saving time in Belize before 1944 and in the Dominican Republic before 1975; and for Canary Islands before 1946, for Guinea-Bissau before 1975, for Iceland before 1969, for Indian Summer Time before 1942, for Indonesia before around 1964, for Kenya before 1960, for Liberia before 1973, for Madeira before 1967, for Namibia before 1943, for the Netherlands in 1937-9, for Pakistan before 1971, for Western Sahara before 1977, and for Zaporozhye in 1880-1924. For Alaska time from 1900 through 1967, instead of "CAT" use the abbreviation "AST", the abbreviation commonly used at the time (Atlantic Standard Time had not been standardized yet). Use "AWT" and "APT" instead of the invented abbreviations "CAWT" and "CAPT". Use "CST" and "CDT" instead of invented abbreviations for Macau before 1999 and Taiwan before 1938, and use "JST" instead of the invented abbreviation "JCST" for Japan and Korea before 1938. Change to database entry category Move the Pacific/Johnston link from 'australasia' to 'backward', since Johnston is now uninhabited. Changes to code zic no longer mishandles some transitions in January 2038 when it attempts to work around Qt bug 53071. This fixes a bug affecting Pacific/Tongatapu that was introduced in zic 2016e. localtime.c now contains a workaround, useful when loading a file generated by a buggy zic. (Problem and localtime.c fix reported by Bradley White.) zdump -i now outputs non-hour numeric time zone abbreviations without a colon, e.g., "+0530" rather than "+05:30". This agrees with zic %z and with common practice, and simplifies auditing of zdump output. zdump is now buildable again with -DUSE_LTZ=0. (Problem reported by Joseph Myers.) zdump.c now always includes private.h, to avoid code duplication with private.h. (Problem reported by Kees Dekker.) localtime.c no longer mishandles early or late timestamps when TZ is set to a POSIX-style string that specifies DST. (Problem reported by Kees Dekker.) date and strftime now cause %z to generate "-0000" instead of "+0000" when the UT offset is zero and the time zone abbreviation begins with "-". Changes to documentation and commentary The 'Theory' file now better documents choice of historical time zone abbreviations. (Problems reported by Michael Deckers.) tz-link.htm now covers leap smearing, which is popular in clouds. Release 2016j - 2016-11-22 23:17:13 -0800 Briefly: Saratov, Russia moves from +03 to +04 on 2016-12-04. Changes to future timestamps Saratov, Russia switches from +03 to +04 on 2016-12-04 at 02:00. This hives off a new zone Europe/Saratov from Europe/Volgograd. (Thanks to Yuri Konotopov and Stepan Golosunov.) Changes to past timestamps The new zone Asia/Atyrau for Atyraū Region, Kazakhstan, is like Asia/Aqtau except it switched from +05/+06 to +04/+05 in spring 1999, not fall 1994. (Thanks to Stepan Golosunov.) Changes to past time zone abbreviations Asia/Gaza and Asia/Hebron now use "EEST", not "EET", to denote summer time before 1948. The old use of "EET" was a typo. Changes to code zic no longer mishandles file systems that lack hard links, fixing bugs introduced in 2016g. (Problems reported by Tom Lane.) Also, when the destination already contains symbolic links, zic should now work better on systems where the 'link' system call does not follow symbolic links. Changes to documentation and commentary tz-link.htm now documents the relationship between release version numbers and development-repository commit tags. (Suggested by Paul Koning.) The 'Theory' file now documents UT. iso3166.tab now accents "Curaçao", and commentary now mentions the names "Cabo Verde" and "Czechia". (Thanks to Jiří Boháč.) Release 2016i - 2016-11-01 23:19:52 -0700 Briefly: Cyprus split into two time zones on 2016-10-30, and Tonga reintroduces DST on 2016-11-06. Changes to future timestamps Pacific/Tongatapu begins DST on 2016-11-06 at 02:00, ending on 2017-01-15 at 03:00. Assume future observances in Tonga will be from the first Sunday in November through the third Sunday in January, like Fiji. (Thanks to Pulu ʻAnau.) Switch to numeric time zone abbreviations for this zone. Changes to past and future timestamps Northern Cyprus is now +03 year round, causing a split in Cyprus time zones starting 2016-10-30 at 04:00. This creates a zone Asia/Famagusta. (Thanks to Even Scharning and Matt Johnson.) Antarctica/Casey switched from +08 to +11 on 2016-10-22. (Thanks to Steffen Thorsen.) Changes to past timestamps Several corrections were made for pre-1975 timestamps in Italy. These affect Europe/Malta, Europe/Rome, Europe/San_Marino, and Europe/Vatican. First, the 1893-11-01 00:00 transition in Italy used the new UT offset (+01), not the old (+00:49:56). (Thanks to Michael Deckers.) Second, rules for daylight saving in Italy were changed to agree with Italy's National Institute of Metrological Research (INRiM) except for 1944, as follows (thanks to Pierpaolo Bernardi, Brian Inglis, and Michael Deckers): The 1916-06-03 transition was at 24:00, not 00:00. The 1916-10-01, 1919-10-05, and 1920-09-19 transitions were at 00:00, not 01:00. The 1917-09-30 and 1918-10-06 transitions were at 24:00, not 01:00. The 1944-09-17 transition was at 03:00, not 01:00. This particular change is taken from Italian law as INRiM's table, (which says 02:00) appears to have a typo here. Also, keep the 1944-04-03 transition for Europe/Rome, as Rome was controlled by Germany then. The 1967-1970 and 1972-1974 fallback transitions were at 01:00, not 00:00. Changes to code The code should now be buildable on AmigaOS merely by setting the appropriate Makefile variables. (From a patch by Carsten Larsen.) Release 2016h - 2016-10-19 23:17:57 -0700 Changes to future timestamps Asia/Gaza and Asia/Hebron end DST on 2016-10-29 at 01:00, not 2016-10-21 at 00:00. (Thanks to Sharef Mustafa.) Predict that future fall transitions will be on the last Saturday of October at 01:00, which is consistent with predicted spring transitions on the last Saturday of March. (Thanks to Tim Parenti.) Changes to past timestamps In Turkey, transitions in 1986-1990 were at 01:00 standard time not at 02:00, and the spring 1994 transition was on March 20, not March 27. (Thanks to Kıvanç Yazan.) Changes to past and future time zone abbreviations Asia/Colombo now uses numeric time zone abbreviations like "+0530" instead of alphabetic ones like "IST" and "LKT". Various English-language sources use "IST", "LKT" and "SLST", with no working consensus. (Usage of "SLST" mentioned by Sadika Sumanapala.) Changes to code zic no longer mishandles relativizing file names when creating symbolic links like /etc/localtime, when these symbolic links are outside the usual directory hierarchy. This fixes a bug introduced in 2016g. (Problem reported by Andreas Stieger.) Changes to build procedure New rules 'traditional_tarballs' and 'traditional_signatures' for building just the traditional-format distribution. (Requested by Deborah Goldsmith.) The file 'version' is now put into the tzdata tarball too. (Requested by Howard Hinnant.) Changes to documentation and commentary The 'Theory' file now has a section on interface stability. (Requested by Paul Koning.) It also mentions features like tm_zone and localtime_rz that have long been supported by the reference code. tz-link.htm has improved coverage of time zone boundaries suitable for geolocation. (Thanks to heads-ups from Evan Siroky and Matt Johnson.) The US commentary now mentions Allen and the "day of two noons". The Fiji commentary mentions the government's 2016-10-03 press release. (Thanks to Raymond Kumar.) Release 2016g - 2016-09-13 08:56:38 -0700 Changes to future timestamps Turkey switched from EET/EEST (+02/+03) to permanent +03, effective 2016-09-07. (Thanks to Burak AYDIN.) Use "+03" rather than an invented abbreviation for the new time. New leap second 2016-12-31 23:59:60 UTC as per IERS Bulletin C 52. (Thanks to Tim Parenti.) Changes to past timestamps For America/Los_Angeles, spring-forward transition times have been corrected from 02:00 to 02:01 in 1948, and from 02:00 to 01:00 in 1950-1966. For zones using Soviet time on 1919-07-01, transitions to UT-based time were at 00:00 UT, not at 02:00 local time. The affected zones are Europe/Kirov, Europe/Moscow, Europe/Samara, and Europe/Ulyanovsk. (Thanks to Alexander Belopolsky.) Changes to past and future time zone abbreviations The Factory zone now uses the time zone abbreviation -00 instead of a long English-language string, as -00 is now the normal way to represent an undefined time zone. Several zones in Antarctica and the former Soviet Union, along with zones intended for ships at sea that cannot use POSIX TZ strings, now use numeric time zone abbreviations instead of invented or obsolete alphanumeric abbreviations. The affected zones are Antarctica/Casey, Antarctica/Davis, Antarctica/DumontDUrville, Antarctica/Mawson, Antarctica/Rothera, Antarctica/Syowa, Antarctica/Troll, Antarctica/Vostok, Asia/Anadyr, Asia/Ashgabat, Asia/Baku, Asia/Bishkek, Asia/Chita, Asia/Dushanbe, Asia/Irkutsk, Asia/Kamchatka, Asia/Khandyga, Asia/Krasnoyarsk, Asia/Magadan, Asia/Omsk, Asia/Sakhalin, Asia/Samarkand, Asia/Srednekolymsk, Asia/Tashkent, Asia/Tbilisi, Asia/Ust-Nera, Asia/Vladivostok, Asia/Yakutsk, Asia/Yekaterinburg, Asia/Yerevan, Etc/GMT-14, Etc/GMT-13, Etc/GMT-12, Etc/GMT-11, Etc/GMT-10, Etc/GMT-9, Etc/GMT-8, Etc/GMT-7, Etc/GMT-6, Etc/GMT-5, Etc/GMT-4, Etc/GMT-3, Etc/GMT-2, Etc/GMT-1, Etc/GMT+1, Etc/GMT+2, Etc/GMT+3, Etc/GMT+4, Etc/GMT+5, Etc/GMT+6, Etc/GMT+7, Etc/GMT+8, Etc/GMT+9, Etc/GMT+10, Etc/GMT+11, Etc/GMT+12, Europe/Kaliningrad, Europe/Minsk, Europe/Samara, Europe/Volgograd, and Indian/Kerguelen. For Europe/Moscow the invented abbreviation MSM was replaced by +05, whereas MSK and MSD were kept as they are not our invention and are widely used. Changes to zone names Rename Asia/Rangoon to Asia/Yangon, with a backward compatibility link. (Thanks to David Massoud.) Changes to code zic no longer generates binary files containing POSIX TZ-like strings that disagree with the local time type after the last explicit transition in the data. This fixes a bug with Africa/Casablanca and Africa/El_Aaiun in some year-2037 timestamps on the reference platform. (Thanks to Alexander Belopolsky for reporting the bug and suggesting a way forward.) If the installed localtime and/or posixrules files are symbolic links, zic now keeps them symbolic links when updating them, for compatibility with platforms like OpenSUSE where other programs configure these files as symlinks. zic now avoids hard linking to symbolic links, avoids some unnecessary mkdir and stat system calls, and uses shorter file names internally. zdump has a new -i option to generate transitions in a smaller but still human-readable format. This option is experimental, and the output format may change in future versions. (Thanks to Jon Skeet for suggesting that an option was needed, and thanks to Tim Parenti and Chris Rovick for further comments.) Changes to build procedure An experimental distribution format is available, in addition to the traditional format which will continue to be distributed. The new format is a tarball tzdb-VERSION.tar.lz with signature file tzdb-VERSION.tar.lz.asc. It unpacks to a top-level directory tzdb-VERSION containing the code and data of the traditional two-tarball format, along with extra data that may be useful. (Thanks to Antonio Diaz Diaz, Oscar van Vlijmen, and many others for comments about the experimental format.) The release version number is now more accurate in the usual case where releases are built from a Git repository. For example, if 23 commits and some working-file changes have been made since release 2016g, the version number is now something like '2016g-23-g50556e3-dirty' instead of the misleading '2016g'. Tagged releases use the same version number format as before, e.g., '2016g'. To support the more accurate version number, its specification has moved from a line in the Makefile to a new source file 'version'. The experimental distribution contains a file to2050.tzs that contains what should be the output of 'zdump -i -c 2050' on primary zones. If this file is available, 'make check' now checks that zdump generates this output. 'make check_web' now works on Fedora-like distributions. Changes to documentation and commentary tzfile.5 now documents the new restriction on POSIX TZ-like strings that is now implemented by zic. Comments now cite URLs for some 1917-1921 Russian DST decrees. (Thanks to Alexander Belopolsky.) tz-link.htm mentions JuliaTime (thanks to Curtis Vogt) and Time4J (thanks to Meno Hochschild) and ThreeTen-Extra, and its description of Java 8 has been brought up to date (thanks to Stephen Colebourne). Its description of local time on Mars has been updated to match current practice, and URLs have been updated and some obsolete ones removed. Release 2016f - 2016-07-05 16:26:51 +0200 Changes affecting future timestamps The Egyptian government changed its mind on short notice, and Africa/Cairo will not introduce DST starting 2016-07-07 after all. (Thanks to Mina Samuel.) Asia/Novosibirsk switches from +06 to +07 on 2016-07-24 at 02:00. (Thanks to Stepan Golosunov.) Changes to past and future timestamps Asia/Novokuznetsk and Asia/Novosibirsk now use numeric time zone abbreviations instead of invented ones. Changes affecting past timestamps Europe/Minsk's 1992-03-29 spring-forward transition was at 02:00 not 00:00. (Thanks to Stepan Golosunov.) Release 2016e - 2016-06-14 08:46:16 -0700 Changes affecting future timestamps Africa/Cairo observes DST in 2016 from July 7 to the end of October. Guess October 27 and 24:00 transitions. (Thanks to Steffen Thorsen.) For future years, guess April's last Thursday to October's last Thursday except for Ramadan. Changes affecting past timestamps Locations while uninhabited now use '-00', not 'zzz', as a placeholder time zone abbreviation. This is inspired by Internet RFC 3339 and is more consistent with numeric time zone abbreviations already used elsewhere. The change affects several arctic and antarctic locations, e.g., America/Cambridge_Bay before 1920 and Antarctica/Troll before 2005. Asia/Baku's 1992-09-27 transition from +04 (DST) to +04 (non-DST) was at 03:00, not 23:00 the previous day. (Thanks to Michael Deckers.) Changes to code zic now outputs a dummy transition at time 2**31 - 1 in zones whose POSIX-style TZ strings contain a '<'. This mostly works around Qt bug 53071 <https://bugreports.qt.io/browse/QTBUG-53071>. (Thanks to Zhanibek Adilbekov for reporting the Qt bug.) Changes affecting documentation and commentary tz-link.htm says why governments should give plenty of notice for time zone or DST changes, and refers to Matt Johnson's blog post. tz-link.htm mentions Tzdata for Elixir. (Thanks to Matt Johnson.) Release 2016d - 2016-04-17 22:50:29 -0700 Changes affecting future timestamps America/Caracas switches from -0430 to -04 on 2016-05-01 at 02:30. (Thanks to Alexander Krivenyshev for the heads-up.) Asia/Magadan switches from +10 to +11 on 2016-04-24 at 02:00. (Thanks to Alexander Krivenyshev and Matt Johnson.) New zone Asia/Tomsk, split off from Asia/Novosibirsk. It covers Tomsk Oblast, Russia, which switches from +06 to +07 on 2016-05-29 at 02:00. (Thanks to Stepan Golosunov.) Changes affecting past timestamps New zone Europe/Kirov, split off from Europe/Volgograd. It covers Kirov Oblast, Russia, which switched from +04/+05 to +03/+04 on 1989-03-26 at 02:00, roughly a year after Europe/Volgograd made the same change. (Thanks to Stepan Golosunov.) Russia and nearby locations had daylight-saving transitions on 1992-03-29 at 02:00 and 1992-09-27 at 03:00, instead of on 1992-03-28 at 23:00 and 1992-09-26 at 23:00. (Thanks to Stepan Golosunov.) Many corrections to historical time in Kazakhstan from 1991 through 2005. (Thanks to Stepan Golosunov.) Replace Kazakhstan's invented time zone abbreviations with numeric abbreviations. Changes to commentary Mention Internet RFCs 7808 (TZDIST) and 7809 (CalDAV time zone references). Release 2016c - 2016-03-23 00:51:27 -0700 Changes affecting future timestamps Azerbaijan no longer observes DST. (Thanks to Steffen Thorsen.) Chile reverts from permanent to seasonal DST. (Thanks to Juan Correa for the heads-up, and to Tim Parenti for corrections.) Guess that future transitions are August's and May's second Saturdays at 24:00 mainland time. Also, call the period from 2014-09-07 through 2016-05-14 daylight saving time instead of standard time, as that seems more appropriate now. Changes affecting past timestamps Europe/Kaliningrad and Europe/Vilnius changed from +03/+04 to +02/+03 on 1989-03-26, not 1991-03-31. Europe/Volgograd changed from +04/+05 to +03/+04 on 1988-03-27, not 1989-03-26. (Thanks to Stepan Golosunov.) Changes to commentary Several updates and URLs for historical and proposed Russian changes. (Thanks to Stepan Golosunov, Matt Johnson, and Alexander Krivenyshev.) Release 2016b - 2016-03-12 17:30:14 -0800 Compatibility note Starting with release 2016b, some data entries cause zic implementations derived from tz releases 2005j through 2015e to issue warnings like "time zone abbreviation differs from POSIX standard (+03)". These warnings should not otherwise affect zic's output and can safely be ignored on today's platforms, as the warnings refer to a restriction in POSIX.1-1988 that was removed in POSIX.1-2001. One way to suppress the warnings is to upgrade to zic derived from tz releases 2015f and later. Changes affecting future timestamps New zones Europe/Astrakhan and Europe/Ulyanovsk for Astrakhan and Ulyanovsk Oblasts, Russia, both of which will switch from +03 to +04 on 2016-03-27 at 02:00 local time. They need distinct zones since their post-1970 histories disagree. New zone Asia/Barnaul for Altai Krai and Altai Republic, Russia, which will switch from +06 to +07 on the same date and local time. The Astrakhan change is already official; the others have passed the first reading in the State Duma and are extremely likely. Also, Asia/Sakhalin moves from +10 to +11 on 2016-03-27 at 02:00. (Thanks to Alexander Krivenyshev for the heads-up, and to Matt Johnson and Stepan Golosunov for followup.) As a trial of a new system that needs less information to be made up, the new zones use numeric time zone abbreviations like "+04" instead of invented abbreviations like "ASTT". Haiti will not observe DST in 2016. (Thanks to Jean Antoine via Steffen Thorsen.) Palestine's spring-forward transition on 2016-03-26 is at 01:00, not 00:00. (Thanks to Hannah Kreitem.) Guess future transitions will be March's last Saturday at 01:00, not March's last Friday at 24:00. Changes affecting past timestamps Europe/Chisinau observed DST during 1990, and switched from +04 to +03 at 1990-05-06 02:00, instead of switching from +03 to +02. (Thanks to Stepan Golosunov.) 1991 abbreviations in Europe/Samara should be SAMT/SAMST, not KUYT/KUYST. (Thanks to Stepan Golosunov.) Changes to code tzselect's diagnostics and checking, and checktab.awk's checking, have been improved. (Thanks to J William Piggott.) tzcode now builds under MinGW. (Thanks to Ian Abbott and Esben Haabendal.) tzselect now tests Julian-date TZ settings more accurately. (Thanks to J William Piggott.) Changes to commentary Comments in zone tables have been improved. (Thanks to J William Piggott.) tzselect again limits its menu comments so that menus fit on a 24×80 alphanumeric display. A new web page tz-how-to.html. (Thanks to Bill Seymour.) In the Theory file, the description of possible time zone abbreviations in tzdata has been cleaned up, as the old description was unclear and inconsistent. (Thanks to Alain Mouette for reporting the problem.) Release 2016a - 2016-01-26 23:28:02 -0800 Changes affecting future timestamps America/Cayman will not observe daylight saving this year after all. Revert our guess that it would. (Thanks to Matt Johnson.) Asia/Chita switches from +0800 to +0900 on 2016-03-27 at 02:00. (Thanks to Alexander Krivenyshev.) Asia/Tehran now has DST predictions for the year 2038 and later, to be March 21 00:00 to September 21 00:00. This is likely better than predicting no DST, albeit off by a day every now and then. Changes affecting past and future timestamps America/Metlakatla switched from PST all year to AKST/AKDT on 2015-11-01 at 02:00. (Thanks to Steffen Thorsen.) America/Santa_Isabel has been removed, and replaced with a backward compatibility link to America/Tijuana. Its contents were apparently based on a misreading of Mexican legislation. Changes affecting past timestamps Asia/Karachi's two transition times in 2002 were off by a minute. (Thanks to Matt Johnson.) Changes affecting build procedure An installer can now combine leap seconds with use of the backzone file, e.g., with 'make PACKRATDATA=backzone REDO=posix_right zones'. The old 'make posix_packrat' rule is now marked as obsolescent. (Thanks to Ian Abbott for an initial implementation.) Changes affecting documentation and commentary A new file LICENSE makes it easier to see that the code and data are mostly public-domain. (Thanks to James Knight.) The three non-public-domain files now use the current (3-clause) BSD license instead of older versions of that license. tz-link.htm mentions the BDE library (thanks to Andrew Paprocki), CCTZ (thanks to Tim Parenti), TimeJones.com, and has a new section on editing tz source files (with a mention of Sublime zoneinfo, thanks to Gilmore Davidson). The Theory and asia files now mention the 2015 book "The Global Transformation of Time, 1870-1950", and cite a couple of reviews. The America/Chicago entry now documents the informal use of US central time in Fort Pierre, South Dakota. (Thanks to Rick McDermid, Matt Johnson, and Steve Jones.) Release 2015g - 2015-10-01 00:39:51 -0700 Changes affecting future timestamps Turkey's 2015 fall-back transition is scheduled for Nov. 8, not Oct. 25. (Thanks to Fatih.) Norfolk moves from +1130 to +1100 on 2015-10-04 at 02:00 local time. (Thanks to Alexander Krivenyshev.) Fiji's 2016 fall-back transition is scheduled for January 17, not 24. (Thanks to Ken Rylander.) Fort Nelson, British Columbia will not fall back on 2015-11-01. It has effectively been on MST (-0700) since it advanced its clocks on 2015-03-08. New zone America/Fort_Nelson. (Thanks to Matt Johnson.) Changes affecting past timestamps Norfolk observed DST from 1974-10-27 02:00 to 1975-03-02 02:00. Changes affecting code localtime no longer mishandles America/Anchorage after 2037. (Thanks to Bradley White for reporting the bug.) On hosts with signed 32-bit time_t, localtime no longer mishandles Pacific/Fiji after 2038-01-16 14:00 UTC. The localtime module allows the variables 'timezone', 'daylight', and 'altzone' to be in common storage shared with other modules, and declares them in case the system <time.h> does not. (Problems reported by Kees Dekker.) On platforms with tm_zone, strftime.c now assumes it is not NULL. This simplifies the code and is consistent with zdump.c. (Problem reported by Christos Zoulas.) Changes affecting documentation The tzfile man page now documents that transition times denote the starts (not the ends) of the corresponding time periods. (Ambiguity reported by Bill Seymour.) Release 2015f - 2015-08-10 18:06:56 -0700 Changes affecting future timestamps North Korea switches to +0830 on 2015-08-15. (Thanks to Steffen Thorsen.) The abbreviation remains "KST". (Thanks to Robert Elz.) Uruguay no longer observes DST. (Thanks to Steffen Thorsen and Pablo Camargo.) Changes affecting past and future timestamps Moldova starts and ends DST at 00:00 UTC, not at 01:00 UTC. (Thanks to Roman Tudos.) Changes affecting data format and code zic's '-y YEARISTYPE' option is no longer documented. The TYPE field of a Rule line should now be '-'; the old values 'even', 'odd', 'uspres', 'nonpres', 'nonuspres' were already undocumented. Although the implementation has not changed, these features do not work in the default installation, they are not used in the data, and they are now considered obsolescent. zic now checks that two rules don't take effect at the same time. (Thanks to Jon Skeet and Arthur David Olson.) Constraints on simultaneity are now documented. The two characters '%z' in a zone format now stand for the UT offset, e.g., '-07' for seven hours behind UT and '+0530' for five hours and thirty minutes ahead. This better supports time zone abbreviations conforming to POSIX.1-2001 and later. Changes affecting installed data files Comments for America/Halifax and America/Glace_Bay have been improved. (Thanks to Brian Inglis.) Data entries have been simplified for Atlantic/Canary, Europe/Simferopol, Europe/Sofia, and Europe/Tallinn. This yields slightly smaller installed data files for Europe/Simferopol and Europe/Tallinn. It does not affect timestamps. (Thanks to Howard Hinnant.) Changes affecting code zdump and zic no longer warn about valid time zone abbreviations like '-05'. Some Visual Studio 2013 warnings have been suppressed. (Thanks to Kees Dekker.) 'date' no longer sets the time of day and its -a, -d, -n and -t options have been removed. Long obsolescent, the implementation of these features had porting problems. Builders no longer need to configure HAVE_ADJTIME, HAVE_SETTIMEOFDAY, or HAVE_UTMPX_H. (Thanks to Kees Dekker for pointing out the problem.) Changes affecting documentation The Theory file mentions naming issues earlier, as these seem to be poorly publicized (thanks to Gilmore Davidson for reporting the problem). tz-link.htm mentions Time Zone Database Parser (thanks to Howard Hinnant). Mention that Herbert Samuel introduced the term "Summer Time". Release 2015e - 2015-06-13 10:56:02 -0700 Changes affecting future timestamps Morocco will suspend DST from 2015-06-14 03:00 through 2015-07-19 02:00, not 06-13 and 07-18 as we had guessed. (Thanks to Milamber.) Assume Cayman Islands will observe DST starting next year, using US rules. Although it isn't guaranteed, it is the most likely. Changes affecting data format The file 'iso3166.tab' now uses UTF-8, so that its entries can better spell the names of Åland Islands, Côte d'Ivoire, and Réunion. Changes affecting code When displaying data, tzselect converts it to the current locale's encoding if the iconv command works. (Problem reported by random832.) tzselect no longer mishandles Dominica, fixing a bug introduced in Release 2014f. (Problem reported by Owen Leibman.) zic -l no longer fails when compiled with -DTZDEFAULT=\"/etc/localtime\". This fixes a bug introduced in Release 2014f. (Problem reported by Leonardo Chiquitto.) Release 2015d - 2015-04-24 08:09:46 -0700 Changes affecting future timestamps Egypt will not observe DST in 2015 and will consider canceling it permanently. For now, assume no DST indefinitely. (Thanks to Ahmed Nazmy and Tim Parenti.) Changes affecting past timestamps America/Whitehorse switched from UT -09 to -08 on 1967-05-28, not 1966-07-01. Also, Yukon's time zone history is documented better. (Thanks to Brian Inglis and Dennis Ferguson.) Change affecting past and future time zone abbreviations The abbreviations for Hawaii-Aleutian standard and daylight times have been changed from HAST/HADT to HST/HDT, as per US Government Printing Office style. This affects only America/Adak since 1983, as America/Honolulu was already using the new style. Changes affecting code zic has some minor performance improvements. Release 2015c - 2015-04-11 08:55:55 -0700 Changes affecting future timestamps Egypt's spring-forward transition is at 24:00 on April's last Thursday, not 00:00 on April's last Friday. 2015's transition will therefore be on Thursday, April 30 at 24:00, not Friday, April 24 at 00:00. Similar fixes apply to 2026, 2037, 2043, etc. (Thanks to Steffen Thorsen.) Changes affecting past timestamps The following changes affect some pre-1991 Chile-related timestamps in America/Santiago, Antarctica/Palmer, and Pacific/Easter. The 1910 transition was January 10, not January 1. The 1918 transition was September 10, not September 1. The UT -04 time observed from 1932 to 1942 is now considered to be standard time, not year-round DST. Santiago observed DST (UT -03) from 1946-07-15 through 1946-08-31, then reverted to standard time, then switched to -05 on 1947-04-01. Assume transitions before 1968 were at 00:00, since we have no data saying otherwise. The spring 1988 transition was 1988-10-09, not 1988-10-02. The fall 1990 transition was 1990-03-11, not 1990-03-18. Assume no UT offset change for Pacific/Easter on 1890-01-01, and omit all transitions on Pacific/Easter from 1942 through 1946 since we have no data suggesting that they existed. One more zone has been turned into a link, as it differed from an existing zone only for older timestamps. As usual, this change affects UT offsets in pre-1970 timestamps only. The zone's old contents have been moved to the 'backzone' file. The affected zone is America/Montreal. Changes affecting commentary Mention the TZUpdater tool. Mention "The Time Now". (Thanks to Brandon Ramsey.) Release 2015b - 2015-03-19 23:28:11 -0700 Changes affecting future timestamps Mongolia will start observing DST again this year, from the last Saturday in March at 02:00 to the last Saturday in September at 00:00. (Thanks to Ganbold Tsagaankhuu.) Palestine will start DST on March 28, not March 27. Also, correct the fall 2014 transition from September 26 to October 24. Adjust future predictions accordingly. (Thanks to Steffen Thorsen.) Changes affecting past timestamps The 1982 zone shift in Pacific/Easter has been corrected, fixing a 2015a regression. (Thanks to Stuart Bishop for reporting the problem.) Some more zones have been turned into links, when they differed from existing zones only for older timestamps. As usual, these changes affect UT offsets in pre-1970 timestamps only. Their old contents have been moved to the 'backzone' file. The affected zones are: America/Antigua, America/Cayman, Pacific/Midway, and Pacific/Saipan. Changes affecting time zone abbreviations Correct the 1992-2010 DST abbreviation in Volgograd from "MSK" to "MSD". (Thanks to Hank W.) Changes affecting code Fix integer overflow bug in reference 'mktime' implementation. (Problem reported by Jörg Richter.) Allow -Dtime_tz=time_t compilations, and allow -Dtime_tz=... libraries to be used in the same executable as standard-library time_t functions. (Problems reported by Bradley White.) Changes affecting commentary Cite the recent Mexican decree changing Quintana Roo's time zone. (Thanks to Carlos Raúl Perasso.) Likewise for the recent Chilean decree. (Thanks to Eduardo Romero Urra.) Update info about Mars time. Release 2015a - 2015-01-29 22:35:20 -0800 Changes affecting future timestamps The Mexican state of Quintana Roo, represented by America/Cancun, will shift from Central Time with DST to Eastern Time without DST on 2015-02-01 at 02:00. (Thanks to Steffen Thorsen and Gwillim Law.) Chile will not change clocks in April or thereafter; its new standard time will be its old daylight saving time. This affects America/Santiago, Pacific/Easter, and Antarctica/Palmer. (Thanks to Juan Correa.) New leap second 2015-06-30 23:59:60 UTC as per IERS Bulletin C 49. (Thanks to Tim Parenti.) Changes affecting past timestamps Iceland observed DST in 1919 and 1921, and its 1939 fallback transition was Oct. 29, not Nov. 29. Remove incorrect data from Shanks about time in Iceland between 1837 and 1908. Some more zones have been turned into links, when they differed from existing zones only for older timestamps. As usual, these changes affect UT offsets in pre-1970 timestamps only. Their old contents have been moved to the 'backzone' file. The affected zones are: Asia/Aden, Asia/Bahrain, Asia/Kuwait, and Asia/Muscat. Changes affecting code tzalloc now scrubs time zone abbreviations compatibly with the way that tzset always has, by replacing invalid bytes with '_' and by shortening too-long abbreviations. tzselect ports to POSIX awk implementations, no longer mishandles POSIX TZ settings when GNU awk is used, and reports POSIX TZ settings to the user. (Thanks to Stefan Kuhn.) Changes affecting build procedure 'make check' now checks for links to links in the data. One such link (for Africa/Asmera) has been fixed. (Thanks to Stephen Colebourne for pointing out the problem.) Changes affecting commentary The leapseconds file commentary now mentions the expiration date. (Problem reported by Martin Burnicki.) Update Mexican Library of Congress URL. Release 2014j - 2014-11-10 17:37:11 -0800 Changes affecting current and future timestamps Turks & Caicos' switch from US eastern time to UT -04 year-round did not occur on 2014-11-02 at 02:00. It's currently scheduled for 2015-11-01 at 02:00. (Thanks to Chris Walton.) Changes affecting past timestamps Many pre-1989 timestamps have been corrected for Asia/Seoul and Asia/Pyongyang, based on sources for the Korean-language Wikipedia entry for time in Korea. (Thanks to Sanghyuk Jung.) Also, no longer guess that Pyongyang mimicked Seoul time after World War II, as this is politically implausible. Some more zones have been turned into links, when they differed from existing zones only for older timestamps. As usual, these changes affect UT offsets in pre-1970 timestamps only. Their old contents have been moved to the 'backzone' file. The affected zones are: Africa/Addis_Ababa, Africa/Asmara, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Kampala, Africa/Mogadishu, Indian/Antananarivo, Indian/Comoro, and Indian/Mayotte. Changes affecting commentary The commentary is less enthusiastic about Shanks as a source, and is more careful to distinguish UT from UTC. Release 2014i - 2014-10-21 22:04:57 -0700 Changes affecting future timestamps Pacific/Fiji will observe DST from 2014-11-02 02:00 to 2015-01-18 03:00. (Thanks to Ken Rylander for the heads-up.) Guess that future years will use a similar pattern. A new Zone Pacific/Bougainville, for the part of Papua New Guinea that plans to switch from UT +10 to +11 on 2014-12-28 at 02:00. (Thanks to Kiley Walbom for the heads-up.) Changes affecting time zone abbreviations Since Belarus is not changing its clocks even though Moscow is, the time zone abbreviation in Europe/Minsk is changing from FET to its more traditional value MSK on 2014-10-26 at 01:00. (Thanks to Alexander Bokovoy for the heads-up about Belarus.) The new abbreviation IDT stands for the pre-1976 use of UT +08 in Indochina, to distinguish it better from ICT (+07). Changes affecting past timestamps Many timestamps have been corrected for Asia/Ho_Chi_Minh before 1976 (thanks to Trần Ngọc Quân for an indirect pointer to Trần Tiến Bình's authoritative book). Asia/Ho_Chi_Minh has been added to zone1970.tab, to give tzselect users in Vietnam two choices, since north and south Vietnam disagreed after our 1970 cutoff. Asia/Phnom_Penh and Asia/Vientiane have been turned into links, as they differed from existing zones only for older timestamps. As usual, these changes affect pre-1970 timestamps only. Their old contents have been moved to the 'backzone' file. Changes affecting code The time-related library functions now set errno on failure, and some crashes in the new tzalloc-related library functions have been fixed. (Thanks to Christos Zoulas for reporting most of these problems and for suggesting fixes.) If USG_COMPAT is defined and the requested timestamp is standard time, the tz library's localtime and mktime functions now set the extern variable timezone to a value appropriate for that timestamp; and similarly for ALTZONE, daylight saving time, and the altzone variable. This change is a companion to the tzname change in 2014h, and is designed to make timezone and altzone more compatible with tzname. The tz library's functions now set errno to EOVERFLOW if they fail because the result cannot be represented. ctime and ctime_r now return NULL and set errno when a timestamp is out of range, rather than having undefined behavior. Some bugs associated with the new 2014g functions have been fixed. This includes a bug that largely incapacitated the new functions time2posix_z and posix2time_z. (Thanks to Christos Zoulas.) It also includes some uses of uninitialized variables after tzalloc. The new code uses the standard type 'ssize_t', which the Makefile now gives porting advice about. Changes affecting commentary Updated URLs for NRC Canada (thanks to Matt Johnson and Brian Inglis). Release 2014h - 2014-09-25 18:59:03 -0700 Changes affecting past timestamps America/Jamaica's 1974 spring-forward transition was Jan. 6, not Apr. 28. Shanks says Asia/Novokuznetsk switched from LMT (not "NMT") on 1924-05-01, not 1920-01-06. The old entry was based on a misinterpretation of Shanks. Some more zones have been turned into links, when they differed from existing zones only for older timestamps. As usual, these changes affect UT offsets in pre-1970 timestamps only. Their old contents have been moved to the 'backzone' file. The affected zones are: Africa/Blantyre, Africa/Bujumbura, Africa/Gaborone, Africa/Harare, Africa/Kigali, Africa/Lubumbashi, Africa/Lusaka, Africa/Maseru, and Africa/Mbabane. Changes affecting code zdump -V and -v now output gmtoff= values on all platforms, not merely on platforms defining TM_GMTOFF. The tz library's localtime and mktime functions now set tzname to a value appropriate for the requested timestamp, and zdump now uses this on platforms not defining TM_ZONE, fixing a 2014g regression. (Thanks to Tim Parenti for reporting the problem.) The tz library no longer sets tzname if localtime or mktime fails. zdump -c no longer mishandles transitions near year boundaries. (Thanks to Tim Parenti for reporting the problem.) An access to uninitialized data has been fixed. (Thanks to Jörg Richter for reporting the problem.) When THREAD_SAFE is defined, the code ports to the C11 memory model. A memory leak has been fixed if ALL_STATE and THREAD_SAFE are defined and two threads race to initialize data used by gmtime-like functions. (Thanks to Andy Heninger for reporting the problems.) Changes affecting build procedure 'make check' now checks better for properly sorted data. Changes affecting documentation and commentary zdump's gmtoff=N output is now documented, and its isdst=D output is now documented to possibly output D values other than 0 or 1. zdump -c's treatment of years is now documented to use the Gregorian calendar and Universal Time without leap seconds, and its behavior at cutoff boundaries is now documented better. (Thanks to Arthur David Olson and Tim Parenti for reporting the problems.) Programs are now documented to use the proleptic Gregorian calendar. (Thanks to Alan Barrett for the suggestion.) Fractional-second GMT offsets have been documented for civil time in 19th-century Chennai, Jakarta, and New York. Release 2014g - 2014-08-28 12:31:23 -0700 Changes affecting future timestamps Turks & Caicos is switching from US eastern time to UT -04 year-round, modeled as a switch on 2014-11-02 at 02:00. [As noted in 2014j, this switch was later delayed.] Changes affecting past timestamps Time in Russia or the USSR before 1926 or so has been corrected by a few seconds in the following zones: Asia/Irkutsk, Asia/Krasnoyarsk, Asia/Omsk, Asia/Samarkand, Asia/Tbilisi, Asia/Vladivostok, Asia/Yakutsk, Europe/Riga, Europe/Samara. For Asia/Yekaterinburg the correction is a few minutes. (Thanks to Vladimir Karpinsky.) The Portuguese decree of 1911-05-26 took effect on 1912-01-01. This affects 1911 timestamps in Africa/Bissau, Africa/Luanda, Atlantic/Azores, and Atlantic/Madeira. Also, Lisbon's pre-1912 GMT offset was -0:36:45 (rounded from -0:36:44.68), not -0:36:32. (Thanks to Stephen Colebourne for pointing to the decree.) Asia/Dhaka ended DST on 2009-12-31 at 24:00, not 23:59. A new file 'backzone' contains data which may appeal to connoisseurs of old timestamps, although it is out of scope for the tz database, is often poorly sourced, and contains some data that is known to be incorrect. The new file is not recommended for ordinary use and its entries are not installed by default. (Thanks to Lester Caine for the high-quality Jersey, Guernsey, and Isle of Man entries.) Some more zones have been turned into links, when they differed from existing zones only for older timestamps. As usual, these changes affect UT offsets in pre-1970 timestamps only. Their old contents have been moved to the 'backzone' file. The affected zones are: Africa/Bangui, Africa/Brazzaville, Africa/Douala, Africa/Kinshasa, Africa/Libreville, Africa/Luanda, Africa/Malabo, Africa/Niamey, and Africa/Porto-Novo. Changes affecting code Unless NETBSD_INSPIRED is defined to 0, the tz library now supplies functions for creating and using objects that represent timezones. The new functions are tzalloc, tzfree, localtime_rz, mktime_z, and (if STD_INSPIRED is also defined) posix2time_z and time2posix_z. They are intended for performance: for example, localtime_rz (unlike localtime_r) is trivially thread-safe without locking. (Thanks to Christos Zoulas for proposing NetBSD-inspired functions, and to Alan Barrett and Jonathan Lennox for helping to debug the change.) zdump now builds with the tz library unless USE_LTZ is defined to 0, This lets zdump use tz features even if the system library lacks them. To build zdump with the system library, use 'make CFLAGS=-DUSE_LTZ=0 TZDOBJS=zdump.o CHECK_TIME_T_ALTERNATIVES='. zdump now uses localtime_rz if available, as it's significantly faster, and it can help zdump better diagnose invalid timezone names. Define HAVE_LOCALTIME_RZ to 0 to suppress this. HAVE_LOCALTIME_RZ defaults to 1 if NETBSD_INSPIRED && USE_LTZ. When localtime_rz is not available, zdump now uses localtime_r and tzset if available, as this is a bit cleaner and faster than plain localtime. Compile with -DHAVE_LOCALTIME_R=0 and/or -DHAVE_TZSET=0 if your system lacks these two functions. If THREAD_SAFE is defined to 1, the tz library is now thread-safe. Although not needed for tz's own applications, which are single-threaded, this supports POSIX better if the tz library is used in multithreaded apps. Some crashes have been fixed when zdump or the tz library is given invalid or outlandish input. The tz library no longer mishandles leap seconds on platforms with unsigned time_t in timezones that lack ordinary transitions after 1970. The tz code now attempts to infer TM_GMTOFF and TM_ZONE if not already defined, to make it easier to configure on common platforms. Define NO_TM_GMTOFF and NO_TM_ZONE to suppress this. Unless the new macro UNINIT_TRAP is defined to 1, the tz code now assumes that reading uninitialized memory yields garbage values but does not cause other problems such as traps. If TM_GMTOFF is defined and UNINIT_TRAP is 0, mktime is now more likely to guess right for ambiguous timestamps near transitions where tm_isdst does not change. If HAVE_STRFTIME_L is defined to 1, the tz library now defines strftime_l for compatibility with recent versions of POSIX. Only the C locale is supported, though. HAVE_STRFTIME_L defaults to 1 on recent POSIX versions, and to 0 otherwise. tzselect -c now uses a hybrid distance measure that works better in Africa. (Thanks to Alan Barrett for noting the problem.) The C source code now ports to NetBSD when GCC_DEBUG_FLAGS is used, or when time_tz is defined. When HAVE_UTMPX_H is set the 'date' command now builds on systems whose <utmpx.h> file does not define WTMPX_FILE, and when setting the date it updates the wtmpx file if _PATH_WTMPX is defined. This affects GNU/Linux and similar systems. For easier maintenance later, some C code has been simplified, some lint has been removed, and the code has been tweaked so that plain 'make' is more likely to work. The C type 'bool' is now used for boolean values, instead of 'int'. The long-obsolete LOCALE_HOME code has been removed. The long-obsolete 'gtime' function has been removed. Changes affecting build procedure 'zdump' no longer links in ialloc.o, as it's not needed. 'make check_time_t_alternatives' no longer assumes GNU diff. Changes affecting distribution tarballs The files checktab.awk and zoneinfo2tdf.pl are now distributed in the tzdata tarball instead of the tzcode tarball, since they help maintain the data. The NEWS and Theory files are now also distributed in the tzdata tarball, as they're relevant for data. (Thanks to Alan Barrett for pointing this out.) Also, the leapseconds.awk file is no longer distributed in the tzcode tarball, since it belongs in the tzdata tarball (where 2014f inadvertently also distributed it). Changes affecting documentation and commentary A new file CONTRIBUTING is distributed. (Thanks to Tim Parenti for suggesting a CONTRIBUTING file, and to Tony Finch and Walter Harms for debugging it.) The man pages have been updated to use function prototypes, to document thread-safe variants like localtime_r, and to document the NetBSD-inspired functions tzalloc, tzfree, localtime_rz, and mktime_z. The fields in Link lines have been renamed to be more descriptive and more like the parameters of 'ln'. LINK-FROM has become TARGET, and LINK-TO has become LINK-NAME. tz-link.htm mentions the IETF's tzdist working group; Windows Runtime etc. (thanks to Matt Johnson); and HP-UX's tztab. Some broken URLs have been fixed in the commentary. (Thanks to Lester Caine.) Commentary about Philippines DST has been updated, and commentary on pre-1970 time in India has been added. Release 2014f - 2014-08-05 17:42:36 -0700 Changes affecting future timestamps Russia will subtract an hour from most of its time zones on 2014-10-26 at 02:00 local time. (Thanks to Alexander Krivenyshev.) There are a few exceptions: Magadan Oblast (Asia/Magadan) and Zabaykalsky Krai are subtracting two hours; conversely, Chukotka Autonomous Okrug (Asia/Anadyr), Kamchatka Krai (Asia/Kamchatka), Kemerovo Oblast (Asia/Novokuznetsk), and the Samara Oblast and the Udmurt Republic (Europe/Samara) are not changing their clocks. The changed zones are Europe/Kaliningrad, Europe/Moscow, Europe/Simferopol, Europe/Volgograd, Asia/Yekaterinburg, Asia/Omsk, Asia/Novosibirsk, Asia/Krasnoyarsk, Asia/Irkutsk, Asia/Yakutsk, Asia/Vladivostok, Asia/Khandyga, Asia/Sakhalin, and Asia/Ust-Nera; Asia/Magadan will have two hours subtracted; and Asia/Novokuznetsk's time zone abbreviation is affected, but not its UTC offset. Two zones are added: Asia/Chita (split from Asia/Yakutsk, and also with two hours subtracted) and Asia/Srednekolymsk (split from Asia/Magadan, but with only one hour subtracted). (Thanks to Tim Parenti for much of the above.) Changes affecting time zone abbreviations Australian eastern time zone abbreviations are now AEST/AEDT not EST, and similarly for the other Australian zones. That is, for eastern standard and daylight saving time the abbreviations are AEST and AEDT instead of the former EST for both; similarly, ACST/ACDT, ACWST/ACWDT, and AWST/AWDT are now used instead of the former CST, CWST, and WST. This change does not affect UT offsets, only time zone abbreviations. (Thanks to Rich Tibbett and many others.) Asia/Novokuznetsk shifts from NOVT to KRAT (remaining on UT +07) effective 2014-10-26 at 02:00 local time. The time zone abbreviation for Xinjiang Time (observed in Ürümqi) has been changed from URUT to XJT. (Thanks to Luther Ma.) Prefer MSK/MSD for Moscow time in Russia, even in other cities. Similarly, prefer EET/EEST for eastern European time in Russia. Change time zone abbreviations in (western) Samoa to use "ST" and "DT" suffixes, as this is more likely to match common practice. Prefix "W" to (western) Samoa time when its standard-time offset disagrees with that of American Samoa. America/Metlakatla now uses PST, not MeST, to abbreviate its time zone. Time zone abbreviations have been updated for Japan's two time zones used 1896-1937. JWST now stands for Western Standard Time, and JCST for Central Standard Time (formerly this was CJT). These abbreviations are now used for time in Korea, Taiwan, and Sakhalin while controlled by Japan. Changes affecting past timestamps China's five zones have been simplified to two, since the post-1970 differences in the other three seem to have been imaginary. The zones Asia/Harbin, Asia/Chongqing, and Asia/Kashgar have been removed; backwards-compatibility links still work, albeit with different behaviors for timestamps before May 1980. Asia/Urumqi's 1980 transition to UT +08 has been removed, so that it is now at +06 and not +08. (Thanks to Luther Ma and to Alois Treindl; Treindl sent helpful translations of two papers by Guo Qingsheng.) Some zones have been turned into links, when they differed from existing zones only for older UT offsets where data entries were likely invented. These changes affect UT offsets in pre-1970 timestamps only. This is similar to the change in release 2013e, except this time for western Africa. The affected zones are: Africa/Bamako, Africa/Banjul, Africa/Conakry, Africa/Dakar, Africa/Freetown, Africa/Lome, Africa/Nouakchott, Africa/Ouagadougou, Africa/Sao_Tome, and Atlantic/St_Helena. This also affects the backwards-compatibility link Africa/Timbuktu. (Thanks to Alan Barrett, Stephen Colebourne, Tim Parenti, and David Patte for reporting problems in earlier versions of this change.) Asia/Shanghai's pre-standard-time UT offset has been changed from 8:05:57 to 8:05:43, the location of Xujiahui Observatory. Its transition to standard time has been changed from 1928 to 1901. Asia/Taipei switched to JWST on 1896-01-01, then to JST on 1937-10-01, then to CST on 1945-09-21 at 01:00, and did not observe DST in 1945. In 1946 it observed DST from 05-15 through 09-30; in 1947 from 04-15 through 10-31; and in 1979 from 07-01 through 09-30. (Thanks to Yu-Cheng Chuang.) Asia/Riyadh's transition to standard time is now 1947-03-14, not 1950. Europe/Helsinki's 1942 fall-back transition was 10-04 at 01:00, not 10-03 at 00:00. (Thanks to Konstantin Hyppönen.) Pacific/Pago_Pago has been changed from UT -11:30 to -11 for the period from 1911 to 1950. Pacific/Chatham has been changed to New Zealand standard time plus 45 minutes for the period before 1957, reflecting a 1956 remark in the New Zealand parliament. Europe/Budapest has several pre-1946 corrections: in 1918 the transition out of DST was on 09-16, not 09-29; in 1919 it was on 11-24, not 09-15; in 1945 it was on 11-01, not 11-03; in 1941 the transition to DST was 04-08 not 04-06 at 02:00; and there was no DST in 1920. Africa/Accra is now assumed to have observed DST from 1920 through 1935. Time in Russia before 1927 or so has been corrected by a few seconds in the following zones: Europe/Moscow, Asia/Irkutsk, Asia/Tbilisi, Asia/Tashkent, Asia/Vladivostok, Asia/Yekaterinburg, Europe/Helsinki, and Europe/Riga. Also, Moscow's location has been changed to its Kilometer 0 point. (Thanks to Vladimir Karpinsky for the Moscow changes.) Changes affecting data format A new file 'zone1970.tab' supersedes 'zone.tab' in the installed data. The new file's extended format allows multiple country codes per zone. The older file is still installed but is deprecated; its format is not changing and it will still be distributed for a while, but new applications should use the new file. The new file format simplifies maintenance of obscure locations. To test this, it adds coverage for the Crozet Islands and the Scattered Islands. (Thanks to Tobias Conradi and Antoine Leca.) The file 'iso3166.tab' is planned to switch from ASCII to UTF-8. It is still ASCII now, but commentary about the switch has been added. The new file 'zone1970.tab' already uses UTF-8. Changes affecting code 'localtime', 'mktime', etc. now use much less stack space if ALL_STATE is defined. (Thanks to Elliott Hughes for reporting the problem.) 'zic' no longer mishandles input when ignoring case in locales that are not compatible with English, e.g., unibyte Turkish locales when compiled with HAVE_GETTEXT. Error diagnostics of 'zic' and 'yearistype' have been reworded so that they no longer use ASCII '-' as if it were a dash. 'zic' now rejects output file names that contain '.' or '..' components. (Thanks to Tim Parenti for reporting the problem.) 'zic -v' now warns about output file names that do not follow POSIX rules, or that contain a digit or '.'. (Thanks to Arthur David Olson for starting the ball rolling on this.) Some lint has been removed when using GCC_DEBUG_FLAGS with GCC 4.9.0. Changes affecting build procedure 'zic' no longer links in localtime.o and asctime.o, as they're not needed. (Thanks to John Cochran.) Changes affecting documentation and commentary The 'Theory' file documents legacy names, the longstanding exceptions to the POSIX-inspired file name rules. The 'zic' documentation clarifies the role of time types when interpreting dates. (Thanks to Arthur David Olson.) Documentation and commentary now prefer UTF-8 to US-ASCII, allowing the use of proper accents in foreign words and names. Code and data have not changed because of this. (Thanks to Garrett Wollman, Ian Abbott, and Guy Harris for helping to debug this.) Non-HTML documentation and commentary now use plain-text URLs instead of HTML insertions, and are more consistent about bracketing URLs when they are not already surrounded by white space. (Thanks to suggestions by Steffen Nurpmeso.) There is new commentary about Xujiahui Observatory, the five time-zone project in China from 1918 to 1949, timekeeping in Japanese-occupied Shanghai, and Tibet Time in the 1950s. The sharp-eyed can spot the warlord Jin Shuren in the data. Commentary about the coverage of each Russian zone has been standardized. (Thanks to Tim Parenti.) There is new commentary about contemporary timekeeping in Ethiopia. Obsolete comments about a 2007 proposal for DST in Kuwait has been removed. There is new commentary about time in Poland in 1919. Proper credit has been given to DST inventor George Vernon Hudson. Commentary about time in Metlakatla, AK and Resolute, NU has been improved, with a new source for the former. In zone.tab, Pacific/Easter no longer mentions Salas y Gómez, as it is uninhabited. Commentary about permanent Antarctic bases has been updated. Several typos have been corrected. (Thanks to Tim Parenti for contributing some of these fixes.) tz-link.htm now mentions the JavaScript libraries Moment Timezone, TimezoneJS.Date, Walltime-js, and Timezone. (Thanks to a heads-up from Matt Johnson.) Also, it mentions the Go 'latlong' package. (Thanks to a heads-up from Dirkjan Ochtman.) The files usno1988, usno1989, usno1989a, usno1995, usno1997, and usno1998 have been removed. These obsolescent US Naval Observatory entries were no longer helpful for maintenance. (Thanks to Tim Parenti for the suggestion.) Release 2014e - 2014-06-12 21:53:52 -0700 Changes affecting near-future timestamps Egypt's 2014 Ramadan-based transitions are June 26 and July 31 at 24:00. (Thanks to Imed Chihi.) Guess that from 2015 on Egypt will temporarily switch to standard time at 24:00 the last Thursday before Ramadan, and back to DST at 00:00 the first Friday after Ramadan. Similarly, Morocco's are June 28 at 03:00 and August 2 at 02:00. (Thanks to Milamber Space Network.) Guess that from 2015 on Morocco will temporarily switch to standard time at 03:00 the last Saturday before Ramadan, and back to DST at 02:00 the first Saturday after Ramadan. Changes affecting past timestamps The abbreviation "MSM" (Moscow Midsummer Time) is now used instead of "MSD" for Moscow's double daylight time in summer 1921. Also, a typo "VLASST" has been repaired to be "VLAST" for Vladivostok summer time in 1991. (Thanks to Hank W. for reporting the problems.) Changes affecting commentary tz-link.htm now cites RFC 7265 for jCal, mentions PTP and the draft CalDAV extension, updates URLs for TSP, TZInfo, IATA, and removes stale pointers to World Time Explorer and WORLDTIME. Release 2014d - 2014-05-27 21:34:40 -0700 Changes affecting code zic no longer generates files containing timestamps before the Big Bang. This works around GNOME glib bug 878 <https://gitlab.gnome.org/GNOME/glib/issues/878> (Thanks to Leonardo Chiquitto for reporting the bug, and to Arthur David Olson and James Cloos for suggesting improvements to the fix.) Changes affecting documentation tz-link.htm now mentions GNOME. Release 2014c - 2014-05-13 07:44:13 -0700 Changes affecting near-future timestamps Egypt observes DST starting 2014-05-15 at 24:00. (Thanks to Ahmad El-Dardiry and Gunther Vermier.) Details have not been announced, except that DST will not be observed during Ramadan. Guess that DST will stop during the same Ramadan dates as Morocco, and that Egypt's future spring and fall transitions will be the same as 2010 when it last observed DST, namely April's last Friday at 00:00 to September's last Thursday at 23:00 standard time. Also, guess that Ramadan transitions will be at 00:00 standard time. Changes affecting code zic now generates transitions for minimum time values, eliminating guesswork when handling low-valued timestamps. (Thanks to Arthur David Olson.) Port to Cygwin sans glibc. (Thanks to Arthur David Olson.) Changes affecting commentary and documentation Remove now-confusing comment about Jordan. (Thanks to Oleksii Nochovnyi.) Release 2014b - 2014-03-24 21:28:50 -0700 Changes affecting near-future timestamps Crimea switches to Moscow time on 2014-03-30 at 02:00 local time. (Thanks to Alexander Krivenyshev.) Move its zone.tab entry from UA to RU. New entry for Troll station, Antarctica. (Thanks to Paul-Inge Flakstad and Bengt-Inge Larsson.) This is currently an approximation; a better version will require the zic and localtime fixes mentioned below, and the plan is to wait for a while until at least the zic fixes propagate. Changes affecting code 'zic' and 'localtime' no longer reject locations needing four transitions per year for the foreseeable future. (Thanks to Andrew Main (Zefram).) Also, 'zic' avoids some unlikely failures due to integer overflow. Changes affecting build procedure 'make check' now detects Rule lines defined but never used. The NZAQ rules, an instance of this problem, have been removed. Changes affecting commentary and documentation Fix Tuesday/Thursday typo in description of time in Israel. (Thanks to Bert Katz via Pavel Kharitonov and Mike Frysinger.) Microsoft Windows 8.1 doesn't support tz database names. (Thanks to Donald MacQueen.) Instead, the Microsoft Windows Store app library supports them. Add comments about Johnston Island time in the 1960s. (Thanks to Lyle McElhaney.) Morocco's 2014 DST start will be as predicted. (Thanks to Sebastien Willemijns.) Release 2014a - 2014-03-07 23:30:29 -0800 Changes affecting near-future timestamps Turkey begins DST on 2014-03-31, not 03-30. (Thanks to Faruk Pasin for the heads-up, and to Tim Parenti for simplifying the update.) Changes affecting past timestamps Fiji ended DST on 2014-01-19 at 02:00, not the previously scheduled 03:00. (Thanks to Steffen Thorsen.) Ukraine switched from Moscow to Eastern European time on 1990-07-01 (not 1992-01-01), and observed DST during the entire next winter. (Thanks to Vladimir in Moscow via Alois Treindl.) In 1988 Israel observed DST from 04-10 to 09-04, not 04-09 to 09-03. (Thanks to Avigdor Finkelstein.) Changes affecting code A uninitialized-storage bug in 'localtime' has been fixed. (Thanks to Logan Chien.) Changes affecting the build procedure The settings for 'make check_web' now default to Ubuntu 13.10. Changes affecting commentary and documentation The boundary of the US Pacific time zone is given more accurately. (Thanks to Alan Mintz.) Chile's 2014 DST will be as predicted. (Thanks to José Miguel Garrido.) Paraguay's 2014 DST will be as predicted. (Thanks to Carlos Raúl Perasso.) Better descriptions of countries with same time zone history as Trinidad and Tobago since 1970. (Thanks to Alan Barrett for suggestion.) Several changes affect tz-link.htm, the main web page. Mention Time.is (thanks to Even Scharning) and WX-now (thanks to David Braverman). Mention xCal (Internet RFC 6321) and jCal. Microsoft has some support for tz database names. CLDR data formats include both XML and JSON. Mention Maggiolo's map of solar vs standard time. (Thanks to Arthur David Olson.) Mention TZ4Net. (Thanks to Matt Johnson.) Mention the timezone-olson Haskell package. Mention zeitverschiebung.net. (Thanks to Martin Jäger.) Remove moribund links to daylight-savings-time.info and to Simple Timer + Clocks. Update two links. (Thanks to Oscar van Vlijmen.) Fix some formatting glitches, e.g., remove random newlines from abbr elements' title attributes. Release 2013i - 2013-12-17 07:25:23 -0800 Changes affecting near-future timestamps: Jordan switches back to standard time at 00:00 on December 20, 2013. The 2006-2011 transition schedule is planned to resume in 2014. (Thanks to Steffen Thorsen.) Changes affecting past timestamps: In 2004, Cuba began DST on March 28, not April 4. (Thanks to Steffen Thorsen.) Changes affecting code The compile-time flag NOSOLAR has been removed, as nowadays the benefit of slightly shrinking runtime table size is outweighed by the cost of disallowing potential future updates that exceed old limits. Changes affecting documentation and commentary The files solar87, solar88, and solar89 are no longer distributed. They were a negative experiment - that is, a demonstration that tz data can represent solar time only with some difficulty and error. Their presence in the distribution caused confusion, as Riyadh civil time was generally not solar time in those years. tz-link.htm now mentions Noda Time. (Thanks to Matt Johnson.) Release 2013h - 2013-10-25 15:32:32 -0700 Changes affecting current and future timestamps: Libya has switched its UT offset back to +02 without DST, instead of +01 with DST. (Thanks to Even Scharning.) Western Sahara (Africa/El_Aaiun) uses Morocco's DST rules. (Thanks to Gwillim Law.) Changes affecting future timestamps: Acre and (we guess) western Amazonas will switch from UT -04 to -05 on 2013-11-10. This affects America/Rio_Branco and America/Eirunepe. (Thanks to Steffen Thorsen.) Add entries for DST transitions in Morocco in the year 2038. This avoids some year-2038 glitches introduced in 2013g. (Thanks to Yoshito Umaoka for reporting the problem.) Changes affecting API The 'tzselect' command no longer requires the 'select' command, and should now work with /bin/sh on more platforms. It also works around a bug in BusyBox awk before version 1.21.0. (Thanks to Patrick 'P. J.' McDermott and Alan Barrett.) Changes affecting code Fix localtime overflow bugs with 32-bit unsigned time_t. zdump no longer assumes sscanf returns maximal values on overflow. Changes affecting the build procedure The builder can specify which programs to use, if any, instead of 'ar' and 'ranlib', and libtz.a is now built locally before being installed. (Thanks to Michael Forney.) A dependency typo in the 'zdump' rule has been fixed. (Thanks to Andrew Paprocki.) The Makefile has been simplified by assuming that 'mkdir -p' and 'cp -f' work as specified by POSIX.2-1992 or later; this is portable nowadays. 'make clean' no longer removes 'leapseconds', since it's host-independent and is part of the distribution. The unused makefile macros TZCSRCS, TZDSRCS, DATESRCS have been removed. Changes affecting documentation and commentary tz-link.htm now mentions TC TIMEZONE's draft time zone service protocol (thanks to Mike Douglass) and TimezoneJS.Date (thanks to Jim Fehrle). Update URLs in tz-link page. Add URLs for Microsoft Windows, since 8.1 introduces tz support. Remove URLs for Tru64 and UnixWare (no longer maintained) and for old advisories. SOFA now does C. Release 2013g - 2013-09-30 21:08:26 -0700 Changes affecting current and near-future timestamps Morocco now observes DST from the last Sunday in March to the last Sunday in October, not April to September respectively. (Thanks to Steffen Thorsen.) Changes affecting 'zic' 'zic' now runs on platforms that lack both hard links and symlinks. (Thanks to Theo Veenker for reporting the problem, for MinGW.) Also, fix some bugs on platforms that lack hard links but have symlinks. 'zic -v' again warns that Asia/Tehran has no POSIX environment variable to predict the far future, fixing a bug introduced in 2013e. Changes affecting the build procedure The 'leapseconds' file is again put into the tzdata tarball. Also, 'leapseconds.awk', so tzdata is self-contained. (Thanks to Matt Burgess and Ian Abbott.) The timestamps of these and other dependent files in tarballs are adjusted more consistently. Changes affecting documentation and commentary The README file is now part of the data tarball as well as the code. It now states that files are public domain unless otherwise specified. (Thanks to Andrew Main (Zefram) for asking for clarifications.) Its details about the 1989 release moved to a place of honor near the end of NEWS. Release 2013f - 2013-09-24 23:37:36 -0700 Changes affecting near-future timestamps Tocantins will very likely not observe DST starting this spring. (Thanks to Steffen Thorsen.) Jordan will likely stay at UT +03 indefinitely, and will not fall back this fall. Palestine will fall back at 00:00, not 01:00. (Thanks to Steffen Thorsen.) Changes affecting API The types of the global variables 'timezone' and 'altzone' (if present) have been changed back to 'long'. This is required for 'timezone' by POSIX, and for 'altzone' by common practice, e.g., Solaris 11. These variables were originally 'long' in the tz code, but were mistakenly changed to 'time_t' in 1987; nobody reported the incompatibility until now. The difference matters on x32, where 'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.) Changes affecting the build procedure Avoid long strings in leapseconds.awk to work around a mawk bug. (Thanks to Cyril Baurand.) Changes affecting documentation and commentary New file 'NEWS' that contains release notes like this one. Paraguay's law does not specify DST transition time; 00:00 is customary. (Thanks to Waldemar Villamayor-Venialbo.) Minor capitalization fixes. Changes affecting version-control only The experimental GitHub repository now contains annotated and signed tags for recent releases, e.g., '2013e' for Release 2013e. Releases are tagged starting with 2012e; earlier releases were done differently, and tags would either not have a simple name or not exactly match what was released. 'make set-timestamps' is now simpler and a bit more portable. Release 2013e - 2013-09-19 23:50:04 -0700 Changes affecting near-future timestamps This year Fiji will start DST on October 27, not October 20. (Thanks to David Wheeler for the heads-up.) For now, guess that Fiji will continue to spring forward the Sunday before the fourth Monday in October. Changes affecting current and future time zone abbreviations Use WIB/WITA/WIT rather than WIT/CIT/EIT for alphabetic Indonesian time zone abbreviations since 1932. (Thanks to George Ziegler, Priyadi Iman Nurcahyo, Zakaria, Jason Grimes, Martin Pitt, and Benny Lin.) This affects Asia/Dili, Asia/Jakarta, Asia/Jayapura, Asia/Makassar, and Asia/Pontianak. Use ART (UT -03, standard time), rather than WARST (also -03, but daylight saving time) for San Luis, Argentina since 2009. Changes affecting Godthåb timestamps after 2037 if version mismatch Allow POSIX-like TZ strings where the transition time's hour can range from -167 through 167, instead of the POSIX-required 0 through 24. E.g., TZ='FJT-12FJST,M10.3.1/146,M1.3.4/75' for the new Fiji rules. This is a more compact way to represent far-future timestamps for America/Godthab, America/Santiago, Antarctica/Palmer, Asia/Gaza, Asia/Hebron, Asia/Jerusalem, Pacific/Easter, and Pacific/Fiji. Other zones are unaffected by this change. (Derived from a suggestion by Arthur David Olson.) Allow POSIX-like TZ strings where daylight saving time is in effect all year. E.g., TZ='WART4WARST,J1/0,J365/25' for Western Argentina Summer Time all year. This supports a more compact way to represent the 2013d data for America/Argentina/San_Luis. Because of the change for San Luis noted above this change does not affect the current data. (Thanks to Andrew Main (Zefram) for suggestions that improved this change.) Where these two TZ changes take effect, there is a minor extension to the tz file format in that it allows new values for the embedded TZ-format string, and the tz file format version number has therefore been increased from 2 to 3 as a precaution. Version-2-based client code should continue to work as before for all timestamps before 2038. Existing version-2-based client code (tzcode, GNU/Linux, Solaris) has been tested on version-3-format files, and typically works in practice even for timestamps after 2037; the only known exception is America/Godthab. Changes affecting timestamps before 1970 Pacific/Johnston is now a link to Pacific/Honolulu. This corrects some errors before 1947. Some zones have been turned into links, when they differ from existing zones only in older data entries that were likely invented or that differ only in LMT or transitions from LMT. These changes affect only timestamps before 1943. The affected zones are: Africa/Juba, America/Anguilla, America/Aruba, America/Dominica, America/Grenada, America/Guadeloupe, America/Marigot, America/Montserrat, America/St_Barthelemy, America/St_Kitts, America/St_Lucia, America/St_Thomas, America/St_Vincent, America/Tortola, and Europe/Vaduz. (Thanks to Alois Treindl for confirming that the old Europe/Vaduz zone was wrong and the new link is better for WWII-era times.) Change Kingston Mean Time from -5:07:12 to -5:07:11. This affects America/Cayman, America/Jamaica and America/Grand_Turk timestamps from 1890 to 1912. Change the UT offset of Bern Mean Time from 0:29:44 to 0:29:46. This affects Europe/Zurich timestamps from 1853 to 1894. (Thanks to Alois Treindl.) Change the date of the circa-1850 Zurich transition from 1849-09-12 to 1853-07-16, overriding Shanks with data from Messerli about postal and telegraph time in Switzerland. Changes affecting time zone abbreviations before 1970 For Asia/Jakarta, use BMT (not JMT) for mean time from 1923 to 1932, as Jakarta was called Batavia back then. Changes affecting API The 'zic' command now outputs a dummy transition when far-future data can't be summarized using a TZ string, and uses a 402-year window rather than a 400-year window. For the current data, this affects only the Asia/Tehran file. It does not affect any of the timestamps that this file represents, so zdump outputs the same information as before. (Thanks to Andrew Main (Zefram).) The 'date' command has a new '-r' option, which lets you specify the integer time to display, a la FreeBSD. The 'tzselect' command has two new options '-c' and '-n', which lets you select a zone based on latitude and longitude. The 'zic' command's '-v' option now warns about constructs that require the new version-3 binary file format. (Thanks to Arthur David Olson for the suggestion.) Support for floating-point time_t has been removed. It was always dicey, and POSIX no longer requires it. (Thanks to Eric Blake for suggesting to the POSIX committee to remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy Heninger, Arthur David Olson, and Alois Treindl, for reporting bugs and elucidating some of the corners of the old floating-point implementation.) The signatures of 'offtime', 'timeoff', and 'gtime' have been changed back to the old practice of using 'long' to represent UT offsets. This had been inadvertently and mistakenly changed to 'int_fast32_t'. (Thanks to Christos Zoulas.) The code avoids undefined behavior on integer overflow in some more places, including gmtime, localtime, mktime and zdump. Changes affecting the zdump utility zdump now outputs "UT" when referring to Universal Time, not "UTC". "UTC" does not make sense for timestamps that predate the introduction of UTC, whereas "UT", a more generic term, does. (Thanks to Steve Allen for clarifying UT vs UTC.) Data changes affecting behavior of tzselect and similar programs Country code BQ is now called the more common name "Caribbean Netherlands" rather than the more official "Bonaire, St Eustatius & Saba". Remove from zone.tab the names America/Montreal, America/Shiprock, and Antarctica/South_Pole, as they are equivalent to existing same-country-code zones for post-1970 timestamps. The data entries for these names are unchanged, so the names continue to work as before. Changes affecting code internals zic -c now runs way faster on 64-bit hosts when given large numbers. zic now uses vfprintf to avoid allocating and freeing some memory. tzselect now computes the list of continents from the data, rather than have it hard-coded. Minor changes pacify GCC 4.7.3 and GCC 4.8.1. Changes affecting the build procedure The 'leapseconds' file is now generated automatically from a new file 'leap-seconds.list', which is a copy of <ftp://ftp.nist.gov/pub/time/leap-seconds.list> A new source file 'leapseconds.awk' implements this. The goal is simplification of the future maintenance of 'leapseconds'. When building the 'posix' or 'right' subdirectories, if the subdirectory would be a copy of the default subdirectory, it is now made a symbolic link if that is supported. This saves about 2 MB of file system space. The links America/Shiprock and Antarctica/South_Pole have been moved to the 'backward' file. This affects only nondefault builds that omit 'backward'. Changes affecting version-control only .gitignore now ignores 'date'. Changes affecting documentation and commentary Changes to the 'tzfile' man page It now mentions that the binary file format may be extended in future versions by appending data. It now refers to the 'zdump' and 'zic' man pages. Changes to the 'zic' man page It lists conditions that elicit a warning with '-v'. It says that the behavior is unspecified when duplicate names are given, or if the source of one link is the target of another. Its examples are updated to match the latest data. The definition of white space has been clarified slightly. (Thanks to Michael Deckers.) Changes to the 'Theory' file There is a new section about the accuracy of the tz database, describing the many ways that errors can creep in, and explaining why so many of the pre-1970 timestamps are wrong or misleading (thanks to Steve Allen, Lester Caine, and Garrett Wollman for discussions that contributed to this). The 'Theory' file describes LMT better (this follows a suggestion by Guy Harris). It refers to the 2013 edition of POSIX rather than the 2004 edition. It's mentioned that excluding 'backward' should not affect the other data, and it suggests at least one zone.tab name per inhabited country (thanks to Stephen Colebourne). Some longstanding restrictions on names are documented, e.g., 'America/New_York' precludes 'America/New_York/Bronx'. It gives more reasons for the 1970 cutoff. It now mentions which time_t variants are supported, such as signed integer time_t. (Thanks to Paul Goyette for reporting typos in an experimental version of this change.) (Thanks to Philip Newton for correcting typos in these changes.) Documentation and commentary is more careful to distinguish UT in general from UTC in particular. (Thanks to Steve Allen.) Add a better source for the Zurich 1894 transition. (Thanks to Pierre-Yves Berger.) Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.) Release 2013d - 2013-07-05 07:38:01 -0700 Changes affecting future timestamps: Morocco's midsummer transitions this year are July 7 and August 10, not July 9 and August 8. (Thanks to Andrew Paprocki.) Israel now falls back on the last Sunday of October. (Thanks to Ephraim Silverberg.) Changes affecting past timestamps: Specify Jerusalem's location more precisely; this changes the pre-1880 times by 2 s. Changing affecting metadata only: Fix typos in the entries for country codes BQ and SX. Changes affecting code: Rework the code to fix a bug with handling Australia/Macquarie on 32-bit hosts (thanks to Arthur David Olson). Port to platforms like NetBSD, where time_t can be wider than long. Add support for testing time_t types other than the system's. Run 'make check_time_t_alternatives' to try this out. Currently, the tests fail for unsigned time_t; this should get fixed at some point. Changes affecting documentation and commentary: Deemphasize the significance of national borders. Update the zdump man page. Remove obsolete NOID comment (thanks to Denis Excoffier). Update several URLs and comments in the web pages. Spelling fixes (thanks to Kevin Lyda and Jonathan Leffler). Update URL for CLDR Zone->Tzid table (thanks to Yoshito Umaoka). Release 2013c - 2013-04-19 16:17:40 -0700 Changes affecting current and future timestamps: Palestine observed DST starting March 29, 2013. (Thanks to Steffen Thorsen.) From 2013 on, Gaza and Hebron both observe DST, with the predicted rules being the last Thursday in March at 24:00 to the first Friday on or after September 21 at 01:00. Assume that the recent change to Paraguay's DST rules is permanent, by moving the end of DST to the 4th Sunday in March every year. (Thanks to Carlos Raúl Perasso.) Changes affecting past timestamps: Fix some historical data for Palestine to agree with that of timeanddate.com, as follows: The spring 2008 change in Gaza and Hebron was on 00:00 Mar 28, not 00:00 Apr 1. The fall 2009 change in Gaza and Hebron on Sep 4 was at 01:00, not 02:00. The spring 2010 change in Hebron was 00:00 Mar 26, not 00:01 Mar 27. The spring 2011 change in Gaza was 00:01 Apr 1, not 12:01 Apr 2. The spring 2011 change in Hebron on Apr 1 was at 00:01, not 12:01. The fall 2011 change in Hebron on Sep 30 was at 00:00, not 03:00. Fix times of habitation for Macquarie to agree with the Tasmania Parks & Wildlife Service history, which indicates that permanent habitation was 1899-1919 and 1948 on. Changing affecting metadata only: Macquarie Island is politically part of Australia, not Antarctica. (Thanks to Tobias Conradi.) Sort Macquarie more consistently with other parts of Australia. (Thanks to Tim Parenti.) Release 2013b - 2013-03-10 22:33:40 -0700 Changes affecting current and future timestamps: Haiti uses US daylight-saving rules this year, and presumably future years. This changes timestamps starting today. (Thanks to Steffen Thorsen.) Paraguay will end DST on March 24 this year. (Thanks to Steffen Thorsen.) For now, assume it's just this year. Morocco does not observe DST during Ramadan; try to predict Ramadan in Morocco as best we can. (Thanks to Erik Homoet for the heads-up.) Changes affecting commentary: Update URLs in tz-link page. Add URLs for webOS, BB10, iOS. Update URL for Solaris. Mention Internet RFC 6557. Update Internet RFCs 2445->5545, 2822->5322. Switch from FTP to HTTP for Internet RFCs. Release 2013a - 2013-02-27 09:20:35 -0800 Change affecting binary data format: The zone offset at the end of version-2-format zone files is now allowed to be 24:00, as per POSIX.1-2008. (Thanks to Arthur David Olson.) Changes affecting current and future timestamps: Chile's 2013 rules, and we guess rules for 2014 and later, will be the same as 2012, namely Apr Sun>=23 03:00 UTC to Sep Sun>=2 04:00 UTC. (Thanks to Steffen Thorsen and Robert Elz.) New Zones Asia/Khandyga, Asia/Ust-Nera, Europe/Busingen. (Thanks to Tobias Conradi and Arthur David Olson.) Many changes affect historical timestamps before 1940. These were deduced from: Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94 <https://www.jstor.org/stable/1774359>. Changes affecting the code: Fix zic bug that mishandled Egypt's 2010 changes (this also affected the data). (Thanks to Arthur David Olson.) Fix localtime bug when time_t is unsigned and data files were generated by a signed time_t system. (Thanks to Doug Bailey for reporting and to Arthur David Olson for fixing.) Allow the email address for bug reports to be set by the packager. The default is tz@iana.org, as before. (Thanks to Joseph S. Myers.) Update HTML checking to be compatible with Ubuntu 12.10. Check that files are a safe subset of ASCII. At some point we may relax this requirement to a safe subset of UTF-8. Without the check, some non-UTF-8 encodings were leaking into the distribution. Commentary changes: Restore a comment about copyright notices that was inadvertently deleted. (Thanks to Arthur David Olson.) Improve the commentary about which districts observe what times in Russia. (Thanks to Oscar van Vlijmen and Arthur David Olson.) Add web page links to tz.js. Add "Run by the Monkeys" to tz-art. (Thanks to Arthur David Olson.) Release 2012j - 2012-11-12 18:34:49 -0800 Libya moved to CET this weekend, but with DST planned next year. (Thanks to Even Scharning, Steffen Thorsen, and Tim Parenti.) Signatures now have the extension .asc, not .sign, as that's more standard. (Thanks to Phil Pennock.) The output of 'zdump --version', and of 'zic --version', now uses a format that is more typical for --version. (Thanks to Joseph S. Myers.) The output of 'tzselect --help', 'zdump --help', and 'zic --help' now uses tz@iana.org rather than the old elsie address. zic -v now complains about abbreviations that are less than 3 or more than 6 characters, as per POSIX. Formerly, it checked for abbreviations that were more than 3. 'make public' no longer puts its temporary directory under /tmp, and uses the just-built zic rather than the system zic. Various fixes to documentation and commentary. Release 2012i - 2012-11-03 12:57:09 -0700 Cuba switches from DST tomorrow at 01:00. (Thanks to Steffen Thorsen.) Linker flags can now be specified via LDFLAGS. AWK now defaults to 'awk', not 'nawk'. The shell in tzselect now defaults to /bin/bash, but this can be overridden by specifying KSHELL. The main web page now mentions the unofficial GitHub repository. (Thanks to Mike Frysinger.) Tarball signatures can now be built by running 'make signatures'. There are also new makefile rules 'tarballs', 'check_public', and separate makefile rules for each tarball and signature file. A few makefile rules are now more portable to strict POSIX. The main web page now lists the canonical IANA URL. Release 2012h - 2012-10-26 22:49:10 -0700 Bahia no longer has DST. (Thanks to Kelley Cook.) Tocantins has DST. (Thanks to Rodrigo Severo.) Israel has new DST rules next year. (Thanks to Ephraim Silverberg.) Jordan stays on DST this winter. (Thanks to Steffen Thorsen.) Web page updates. More C modernization, except that at Arthur David Olson's suggestion the instances of 'register' were kept. Release 2012g - 2012-10-17 20:59:45 -0700 Samoa fall 2012 and later. (Thanks to Nicholas Pereira and Robert Elz.) Palestine fall 2012. (Thanks to Steffen Thorsen.) Assume C89. To attack the version-number problem, this release ships the file 'Makefile' (which contains the release number) in both the tzcode and the tzdata tarballs. The two Makefiles are identical, and should be identical in any matching pair of tarballs, so it shouldn't matter which order you extract the tarballs. Perhaps we can come up with a better version-number scheme at some point; this scheme does have the virtue of not adding more files. Release 2012f - 2012-09-12 23:17:03 -0700 * australasia (Pacific/Fiji): Fiji DST is October 21 through January 20 this year. (Thanks to Steffen Thorsen.) Release 2012e - 2012-08-02 20:44:55 -0700 * australasia (Pacific/Fakaofo): Tokelau is UT +13, not +14. (Thanks to Steffen Thorsen.) * Use a single version number for both code and data. * .gitignore: New file. * Remove trailing white space. Release code2012c-data2012d - 2012-07-19 16:35:33 -0700 Changes for Morocco's timestamps, which take effect in a couple of hours, along with infrastructure changes to accommodate how the tz code and data are released on IANA. Release data2012c - 2012-03-27 12:17:25 -0400 africa Summer time changes for Morocco (to start late April 2012) asia Changes for 2012 for Gaza & the West Bank (Hebron) and Syria northamerica Haiti following US/Canada rules for 2012 (and we're assuming, for now anyway, for the future). Release 2012b - 2012-03-02 12:29:15 +0700 There is just one change to tzcode2012b (compared with 2012a): the Makefile that was accidentally included with 2012a has been replaced with the version that should have been there, which is identical with the previous version (from tzcode2011i). There are just two changes in tzdata2012b compared with 2012a. Most significantly, summer time in Cuba has been delayed 3 weeks (now starts April 1 rather than March 11). Since Mar 11 (the old start date, as listed in 2012a) is just a little over a week away, this change is urgent. Less importantly, an excess tab in one of the changes in zone.tab in 2012a has been removed. Release 2012a - 2012-03-01 18:28:10 +0700 The changes in tzcode2012a (compared to the previous version, 2011i) are entirely to the README and tz-art.htm and tz-link.htm files, if none of those concern you, you can ignore the code update. The changes reflect the changed addresses for the mailing list and the code and data distribution points & methods (and a link to DateTime::TimeZone::Tzfile has been added to tz-link.htm). In tzdata2012a (compared to the previous release, which was 2011n) the major changes are: Chile 2011/2012 and 2012/2013 summer time date adjustments. Falkland Islands onto permanent summer time (we're assuming for the foreseeable future, though 2012 is all we're fairly certain of.) Armenia has abolished Summer Time. Tokelau jumped the International Date Line back last December (just the same as their near neighbour, Samoa). America/Creston is a new zone for a small area of British Columbia There will be a leapsecond 2012-06-30 23:59:60 UTC. Other minor changes are: Corrections to 1918 Canadian summer time end dates. Updated URL for UK time zone history (in comments) A few typos in Le Corre's list of free French place names (comments) Release data2011n - 2011-10-30 14:57:54 +0700 There are three changes of note - most urgently, Cuba (America/Havana) has extended summer time by two weeks, now to end on Nov 13, rather than the (already past) Oct 30. Second, the Pridnestrovian Moldavian Republic (Europe/Tiraspol) decided not to split from the rest of Moldova after all, and consequently that zone has been removed (again) and reinstated in the "backward" file as a link to Europe/Chisinau. And third, the end date for Fiji's summer time this summer was moved forward from the earlier planned Feb 26, to Jan 22. Apart from that, Moldova (MD) returns to a single entry in zone.tab (and the incorrect syntax that was in the 2011m version of that file is so fixed - it would have been fixed in a different way had this change not happened - that's the "missing" sccs version id). Release data2011m - 2011-10-24 21:42:16 +0700 In particular, the typos in comments in the data (2011-11-17 should have been 2011-10-17 as Alan Barrett noted, and spelling of Tiraspol that Tim Parenti noted) have been fixed, and the change for Ukraine has been made in all 4 Ukrainian zones, rather than just Europe/Kiev (again, thanks to Tim Parenti, and also Denys Gavrysh). In addition, I added Europe/Tiraspol to zone.tab. This time, all the files have new version numbers... (including the files otherwise unchanged in 2011m that were changed in 2011l but didn't get new version numbers there...) Release data2011l - 2011-10-10 11:15:43 +0700 There are just 2 changes that cause different generated tzdata files from zic, to Asia/Hebron and Pacific/Fiji - the possible change for Bahia, Brazil is included, but commented out. Compared with the diff I sent out last week, this version also includes attributions for the sources for the changes (in much the same format as ado used, but the html tags have not been checked, verified, or used in any way at all, so if there are errors there, please let me know.) Release data2011k - 2011-09-20 17:54:03 -0400 [not summarized] Release data2011j - 2011-09-12 09:22:49 -0400 (contemporary changes for Samoa; past changes for Kenya, Uganda, and Tanzania); there are also two spelling corrections to comments in the australasia file (with thanks to Christos Zoulas). Release 2011i - 2011-08-29 05:56:32 -0400 [not summarized] Release data2011h - 2011-06-15 18:41:48 -0400 Russia and Curaçao changes Release 2011g - 2011-04-25 09:07:22 -0400 update the rules for Egypt to reflect its abandonment of DST this year Release 2011f - 2011-04-06 17:14:53 -0400 [not summarized] Release 2011e - 2011-03-31 16:04:38 -0400 Morocco, Chile, and tz-link changes Release 2011d - 2011-03-14 09:18:01 -0400 changes that impact present-day timestamps in Cuba, Samoa, and Turkey Release 2011c - 2011-03-07 09:30:09 -0500 These do affect current timestamps in Chile and Annette Island, Canada. Release 2011b - 2011-02-07 08:44:50 -0500 [not summarized] Release 2011a - 2011-01-24 10:30:16 -0500 [not summarized] Release data2010o - 2010-11-01 09:18:23 -0400 change to the end of DST in Fiji in 2011 Release 2010n - 2010-10-25 08:19:17 -0400 [not summarized] Release 2010m - 2010-09-27 09:24:48 -0400 Hong Kong, Vostok, and zic.c changes Release 2010l - 2010-08-16 06:57:25 -0400 [not summarized] Release 2010k - 2010-07-26 10:42:27 -0400 [not summarized] Release 2010j - 2010-05-10 09:07:48 -0400 changes for Bahía de Banderas and for version naming Release data2010i - 2010-04-16 18:50:45 -0400 the end of DST in Morocco on 2010-08-08 Release data2010h - 2010-04-05 09:58:56 -0400 [not summarized] Release data2010g - 2010-03-24 11:14:53 -0400 [not summarized] Release 2010f - 2010-03-22 09:45:46 -0400 [not summarized] Release data2010e - 2010-03-08 14:24:27 -0500 corrects the Dhaka bug found by Danvin Ruangchan Release data2010d - 2010-03-06 07:26:01 -0500 [not summarized] Release 2010c - 2010-03-01 09:20:58 -0500 changes including KRE's suggestion for earlier initialization of "goahead" and "goback" structure elements Release code2010a - 2010-02-16 10:40:04 -0500 [not summarized] Release data2010b - 2010-01-20 12:37:01 -0500 Mexico changes Release data2010a - 2010-01-18 08:30:04 -0500 changes to Dhaka Release data2009u - 2009-12-26 08:32:28 -0500 changes to DST in Bangladesh Release 2009t - 2009-12-21 13:24:27 -0500 [not summarized] Release data2009s - 2009-11-14 10:26:32 -0500 (cosmetic) Antarctica change and the DST-in-Fiji-in-2009-and-2010 change Release 2009r - 2009-11-09 10:10:31 -0500 "antarctica" and "tz-link.htm" changes Release 2009q - 2009-11-02 09:12:40 -0500 with two corrections as reported by Eric Muller and Philip Newton Release data2009p - 2009-10-23 15:05:27 -0400 Argentina (including San Luis) changes (with the correction from Mariano Absatz) Release data2009o - 2009-10-14 16:49:38 -0400 Samoa (commentary only), Pakistan, and Bangladesh changes Release data2009n - 2009-09-22 15:13:38 -0400 added commentary for Argentina and a change to the end of DST in 2009 in Pakistan Release data2009m - 2009-09-03 10:23:43 -0400 Samoa and Palestine changes Release data2009l - 2009-08-14 09:13:07 -0400 Samoa (comments only) and Egypt Release 2009k - 2009-07-20 09:46:08 -0400 [not summarized] Release data2009j - 2009-06-15 06:43:59 -0400 Bangladesh change (with a short turnaround since the DST change is impending) Release 2009i - 2009-06-08 09:21:22 -0400 updating for DST in Bangladesh this year Release 2009h - 2009-05-26 09:19:14 -0400 [not summarized] Release data2009g - 2009-04-20 16:34:07 -0400 Cairo Release data2009f - 2009-04-10 11:00:52 -0400 correct DST in Pakistan Release 2009e - 2009-04-06 09:08:11 -0400 [not summarized] Release 2009d - 2009-03-23 09:38:12 -0400 Morocco, Tunisia, Argentina, and American Astronomical Society changes Release data2009c - 2009-03-16 09:47:51 -0400 change to the start of Cuban DST Release 2009b - 2009-02-09 11:15:22 -0500 [not summarized] Release 2009a - 2009-01-21 10:09:39 -0500 [not summarized] Release data2008i - 2008-10-21 12:10:25 -0400 southamerica and zone.tab files, with Argentina DST rule changes and United States zone reordering and recommenting Release 2008h - 2008-10-13 07:33:56 -0400 [not summarized] Release 2008g - 2008-10-06 09:03:18 -0400 Fix a broken HTML anchor and update Brazil's DST transitions; there's also a slight reordering of information in tz-art.htm. Release data2008f - 2008-09-09 22:33:26 -0400 [not summarized] Release 2008e - 2008-07-28 14:11:17 -0400 changes by Arthur David Olson and Jesper Nørgaard Welen Release data2008d - 2008-07-07 09:51:38 -0400 changes by Arthur David Olson, Paul Eggert, and Rodrigo Severo Release data2008c - 2008-05-19 17:48:03 -0400 Pakistan, Morocco, and Mongolia Release data2008b - 2008-03-24 08:30:59 -0400 including renaming Asia/Calcutta to Asia/Kolkata, with a backward link provided Release 2008a - 2008-03-08 05:42:16 -0500 [not summarized] Release 2007k - 2007-12-31 10:25:22 -0500 most importantly, changes to the "southamerica" file based on Argentina's readoption of daylight saving time Release 2007j - 2007-12-03 09:51:01 -0500 1. eliminate the "P" (parameter) macro; 2. the "noncontroversial" changes circulated on the time zone mailing list (less the changes to "logwtmp.c"); 3. eliminate "too many transition" errors when "min" is used in time zone rules; 4. changes by Paul Eggert (including updated information for Venezuela). Release data2007i - 2007-10-30 10:28:11 -0400 changes for Cuba and Syria Release 2007h - 2007-10-01 10:05:51 -0400 changes by Paul Eggert, as well as an updated link to the ICU project in tz-link.htm Release 2007g - 2007-08-20 10:47:59 -0400 changes by Paul Eggert The "leapseconds" file has been updated to incorporate the most recent International Earth Rotation and Reference Systems Service (IERS) bulletin. There's an addition to tz-art.htm regarding the television show "Medium". Release 2007f - 2007-05-07 10:46:46 -0400 changes by Paul Eggert (including Haiti, Turks and Caicos, and New Zealand) changes to zic.c to allow hour values greater than 24 (along with Paul's improved time value overflow checking) Release 2007e - 2007-04-02 10:11:52 -0400 Syria and Honduras changes by Paul Eggert zic.c variable renaming changes by Arthur David Olson Release 2007d - 2007-03-20 08:48:30 -0400 changes by Paul Eggert the elimination of white space at the ends of lines Release 2007c - 2007-02-26 09:09:37 -0500 changes by Paul Eggert Release 2007b - 2007-02-12 09:34:20 -0500 Paul Eggert's proposed change to the quotation handling logic in zic.c. changes to the commentary in "leapseconds" reflecting the IERS announcement that there is to be no positive leap second at the end of June 2007. Release 2007a - 2007-01-08 12:28:29 -0500 changes by Paul Eggert Derick Rethans's Asmara change Oscar van Vlijmen's Easter Island local mean time change symbolic link changes Release 2006p - 2006-11-27 08:54:27 -0500 changes by Paul Eggert Release 2006o - 2006-11-06 09:18:07 -0500 changes by Paul Eggert Release 2006n - 2006-10-10 11:32:06 -0400 changes by Paul Eggert Release 2006m - 2006-10-02 15:32:35 -0400 changes for Uruguay, Palestine, and Egypt by Paul Eggert (minimalist) changes to zic.8 to clarify "until" information Release data2006l - 2006-09-18 12:58:11 -0400 Paul's best-effort work on this coming weekend's Egypt time change Release 2006k - 2006-08-28 12:19:09 -0400 changes by Paul Eggert Release 2006j - 2006-08-21 09:56:32 -0400 changes by Paul Eggert Release code2006i - 2006-08-07 12:30:55 -0400 localtime.c fixes Ken Pizzini's conversion script Release code2006h - 2006-07-24 09:19:37 -0400 adds public domain notices to four files includes a fix for transition times being off by a second adds a new recording to the "arts" file (information courtesy Colin Bowern) Release 2006g - 2006-05-08 17:18:09 -0400 northamerica changes by Paul Eggert Release 2006f - 2006-05-01 11:46:00 -0400 a missing version number problem is fixed (with thanks to Bradley White for catching the problem) Release 2006d - 2006-04-17 14:33:43 -0400 changes by Paul Eggert added new items to tz-arts.htm that were found by Paul Release 2006c - 2006-04-03 10:09:32 -0400 two sets of data changes by Paul Eggert a fencepost error fix in zic.c changes to zic.c and the "europe" file to minimize differences between output produced by the old 32-bit zic and the new 64-bit version Release 2006b - 2006-02-20 10:08:18 -0500 [tz32code2006b + tz64code2006b + tzdata2006b] 64-bit code All SCCS IDs were bumped to "8.1" for this release. Release 2006a - 2006-01-30 08:59:31 -0500 changes by Paul Eggert (in particular, Indiana time zone moves) an addition to the zic manual page to describe how special-case transitions are handled Release 2005r - 2005-12-27 09:27:13 -0500 Canadian changes by Paul Eggert They also add "<pre>" directives to time zone data files and reflect changes to warning message logic in "zdump.c" (but with calls to "gettext" kept unbundled at the suggestion of Ken Pizzini). Release 2005q - 2005-12-13 09:17:09 -0500 Nothing earth-shaking here: 1. Electronic mail addresses have been removed. 2. Casts of the return value of exit have been removed. 3. Casts of the argument of is.* macros have been added. 4. Indentation in one section of zic.c has been fixed. 5. References to dead URLs in the data files have been dealt with. Release 2005p - 2005-12-05 10:30:53 -0500 "systemv", "tz-link.htm", and "zdump.c" changes (less the casts of arguments to the is* macros) Release 2005o - 2005-11-28 10:55:26 -0500 Georgia, Cuba, Nicaragua, and Jordan changes by Paul Eggert zdump.c lint fixes by Arthur David Olson Release 2005n - 2005-10-03 09:44:09 -0400 changes by Paul Eggert (both the Uruguay changes and the Kyrgyzstan et al. changes) Release 2005m - 2005-08-29 12:15:40 -0400 changes by Paul Eggert (with a small tweak to the tz-art change) a declaration of an unused variable has been removed from zdump.c Release 2005l - 2005-08-22 12:06:39 -0400 changes by Paul Eggert overflow/underflow checks by Arthur David Olson, minus changes to the "Theory" file about the pending addition of 64-bit data (I grow less confident of the changes being accepted with each passing day, and the changes no longer increase the data files nine-fold--there's less than a doubling in size by my local Sun's reckoning) Release 2005k - 2005-07-14 14:14:24 -0400 The "leapseconds" file has been edited to reflect the recently announced leap second at the end of 2005. I've also deleted electronic mail addresses from the files as an anti-spam measure. Release 2005j - 2005-06-13 14:34:13 -0400 These reflect changes to limit the length of time zone abbreviations and the characters used in those abbreviations. There are also changes to handle POSIX-style "quoted" timezone environment variables. The changes were circulated on the time zone mailing list; the only change since then was the removal of a couple of minimum-length of abbreviation checks. Release data2005i - 2005-04-21 15:04:16 -0400 changes (most importantly to Nicaragua and Haiti) by Paul Eggert Release 2005h - 2005-04-04 11:24:47 -0400 changes by Paul Eggert minor changes to Makefile and zdump.c to produce more useful output when doing a "make typecheck" Release 2005g - 2005-03-14 10:11:21 -0500 changes by Paul Eggert (a change to current DST rules in Uruguay and an update to a link to time zone software) Release 2005f - 2005-03-01 08:45:32 -0500 data and documentation changes by Paul Eggert Release 2005e - 2005-02-10 15:59:44 -0500 [not summarized] Release code2005d - 2005-01-31 09:21:47 -0500 make zic complain about links to links if the -v flag is used have "make public" do more code checking add an include to "localtime.c" for the benefit of gcc systems Release 2005c - 2005-01-17 18:36:29 -0500 get better results when mktime runs on a system where time_t is double changes to the data files (most importantly to Paraguay) Release 2005b - 2005-01-10 09:19:54 -0500 Get localtime and gmtime working on systems with exotic time_t types. Update the leap second commentary in the "leapseconds" file. Release 2005a - 2005-01-01 13:13:44 -0500 [not summarized] Release code2004i - 2004-12-14 13:42:58 -0500 Deal with systems where time_t is unsigned. Release code2004h - 2004-12-07 11:40:18 -0500 64-bit-time_t changes Release 2004g - 2004-11-02 09:06:01 -0500 update to Cuba (taking effect this weekend) other changes by Paul Eggert correction of the spelling of Oslo changed versions of difftime.c and private.h Release code2004f - 2004-10-21 10:25:22 -0400 Cope with wide-ranging tm_year values. Release 2004e - 2004-10-11 14:47:21 -0400 Brazil/Argentina/Israel changes by Paul Eggert changes to tz-link.htm by Paul one small fix to Makefile Release 2004d - 2004-09-22 08:27:29 -0400 Avoid overflow problems when TM_YEAR_BASE is added to an integer. Release 2004c - 2004-08-11 12:06:26 -0400 asctime-related changes (variants of) some of the documentation changes suggested by Paul Eggert Release 2004b - 2004-07-19 14:33:35 -0400 data changes by Paul Eggert - most importantly, updates for Argentina Release 2004a - 2004-05-27 12:00:47 -0400 changes by Paul Eggert Handle DST transitions that occur at the end of a month in some years but at the start of the following month in other years. Add a copy of the correspondence that's the basis for claims about DST in the Navajo Nation. Release 2003e - 2003-12-15 09:36:47 -0500 changes by Arthur David Olson (primarily code changes) changes by Paul Eggert (primarily data changes) minor changes to "Makefile" and "northamerica" (in the latter case, optimization of the "Toronto" rules) Release 2003d - 2003-10-06 09:34:44 -0400 changes by Paul Eggert Release 2003c - 2003-09-16 10:47:05 -0400 Fix bad returns in zic.c's inleap function. Thanks to Bradley White for catching the problem! Release 2003b - 2003-09-16 07:13:44 -0400 Add a "--version" option (and documentation) to the zic and zdump commands. changes to overflow/underflow checking in zic a localtime typo fix. Update the leapseconds and tz-art.htm files. Release 2003a - 2003-03-24 09:30:54 -0500 changes by Paul Eggert a few additions and modifications to the tz-art.htm file Release 2002d - 2002-10-15 13:12:42 -0400 changes by Paul Eggert, less the "Britain (UK)" change in iso3166.tab There's also a new time zone quote in "tz-art.htm". Release 2002c - 2002-04-04 11:55:20 -0500 changes by Paul Eggert Change zic.c to avoid creating symlinks to files that don't exist. Release 2002b - 2002-01-28 12:56:03 -0500 [These change notes are for Release 2002a, which was corrupted. 2002b was a corrected version of 2002a.] changes by Paul Eggert Update the "leapseconds" file to note that there'll be no leap second at the end of June, 2002. Change "zic.c" to deal with a problem in handling the "Asia/Bishkek" zone. Change to "difftime.c" to avoid sizeof problems. Release 2001d - 2001-10-09 13:31:32 -0400 changes by Paul Eggert Release 2001c - 2001-06-05 13:59:55 -0400 changes by Paul Eggert and Andrew Brown Release 2001b - 2001-04-05 16:44:38 -0400 changes by Paul Eggert (modulo jnorgard's typo fix) tz-art.htm has been HTMLified. Release 2001a - 2001-03-13 12:57:44 -0500 changes by Paul Eggert An addition to the "leapseconds" file: comments with the text of the latest IERS leap second notice. Trailing white space has been removed from data file lines, and repeated spaces in "Rule Jordan" lines in the "asia" file have been converted to tabs. Release 2000h - 2000-12-14 15:33:38 -0500 changes by Paul Eggert one typo fix in the "art" file With providence, this is the last update of the millennium. Release 2000g - 2000-10-10 11:35:22 -0400 changes by Paul Eggert correction of John Mackin's name submitted by Robert Elz Garry Shandling's Daylight Saving Time joke (!?!) from the recent Emmy Awards broadcast. Release 2000f - 2000-08-10 09:31:58 -0400 changes by Paul Eggert Added information in "tz-art.htm" on a Seinfeld reference to DST. Error checking and messages in the "yearistype" script have been improved. Release 2000e - 2000-07-31 09:27:54 -0400 data changes by Paul Eggert a change to the default value of the defined constant HAVE_STRERROR the addition of a Dave Barry quote on DST to the tz-arts file Release 2000d - 2000-04-20 15:43:04 -0400 changes to the documentation and code of strftime for C99 conformance a bug fix for date.c These are based on (though modified from) changes by Paul Eggert. Release 2000c - 2000-03-04 10:31:43 -0500 changes by Paul Eggert Release 2000b - 2000-02-21 12:16:29 -0500 changes by Paul Eggert and Joseph Myers modest tweaks to the tz-art.htm and tz-link.htm files Release 2000a - 2000-01-18 09:21:26 -0500 changes by Paul Eggert The two hypertext documents have also been renamed. Release code1999i-data1999j - 1999-11-15 18:43:22 -0500 Paul Eggert's changes additions to the "zic" manual page and the "Arts.htm" file Release code1999h-data1999i - 1999-11-08 14:55:21 -0500 [not summarized] Release data1999h - 1999-10-07 03:50:29 -0400 changes by Paul Eggert to "europe" (most importantly, fixing Lithuania and Estonia) Release 1999g - 1999-09-28 11:06:18 -0400 data changes by Paul Eggert (most importantly, the change for Lebanon that buys correctness for this coming Sunday) The "code" file contains changes to "Makefile" and "checktab.awk" to allow better checking of time zone files before they are published. Release 1999f - 1999-09-23 09:48:14 -0400 changes by Arthur David Olson and Paul Eggert Release 1999e - 1999-08-17 15:20:54 -0400 changes circulated by Paul Eggert, although the change to handling of DST-specifying timezone names has been commented out for now (search for "XXX" in "localtime.c" for details). These files also do not make any changes to the start of DST in Brazil. In addition to Paul's changes, there are updates to "Arts.htm" and cleanups of URLs. Release 1999d - 1999-03-30 11:31:07 -0500 changes by Paul Eggert The Makefile's "make public" rule has also been changed to do a test compile of each individual time zone data file (which should help avoid problems such as the one we had with Nicosia). Release 1999c - 1999-03-25 09:47:47 -0500 changes by Paul Eggert, most importantly the change for Chile. Release 1999b - 1999-02-01 17:51:44 -0500 changes by Paul Eggert code changes (suggested by Mani Varadarajan, mani at be.com) for correct handling of symbolic links when building using a relative directory code changes to generate correct messages for failed links updates to the URLs in Arts.htm Release 1999a - 1999-01-19 16:20:29 -0500 error message internationalizations and corrections in zic.c and zdump.c (as suggested by Vladimir Michl, vladimir.michl at upol.cz, to whom thanks!) Release code1998h-data1998i - 1998-10-01 09:56:10 -0400 changes for Brazil, Chile, and Germany support for use of "24:00" in the input files for the time zone compiler Release code1998g-data1998h - 1998-09-24 10:50:28 -0400 changes by Paul Eggert correction to a define in the "private.h" file Release data1998g - 1998-08-11 03:28:35 -0000 [tzdata1998g.tar.gz is missing!] Lithuanian change provided by mgedmin at pub.osf.it Move creation of the GMT link with Etc/GMT to "etcetera" (from "backward") to ensure that the GMT file is created even where folks don't want the "backward" links (as suggested by Paul Eggert). Release data1998f - 1998-07-20 13:50:00 -0000 [tzdata1998f.tar.gz is missing!] Update the "leapseconds" file to include the newly announced insertion at the end of 1998. Release code1998f - 1998-06-01 10:18:31 -0400 addition to localtime.c by Guy Harris Release 1998e - 1998-05-28 09:56:26 -0400 The Makefile is changed to produce zoneinfo-posix rather than zoneinfo/posix, and to produce zoneinfo-leaps rather than zoneinfo/right. data changes by Paul Eggert changes from Guy Harris to provide asctime_r and ctime_r A usno1998 file (substantially identical to usno1997) has been added. Release 1998d - 1998-05-14 11:58:34 -0400 changes to comments (in particular, elimination of references to CIA maps). "Arts.htm", "WWW.htm", "asia", and "australasia" are the only places where changes occur. Release 1998c - 1998-02-28 12:32:26 -0500 changes by Paul Eggert (save the "French correction," on which I'll wait for the dust to settle) symlink changes changes and additions to Arts.htm Release 1998b - 1998-01-17 14:31:51 -0500 URL cleanups and additions Release 1998a - 1998-01-13 12:37:35 -0500 changes by Paul Eggert Release code1997i-data1997k - 1997-12-29 09:53:41 -0500 changes by Paul Eggert, with minor modifications from Arthur David Olson to make the files more browser friendly Release code1997h-data1997j - 1997-12-18 17:47:35 -0500 minor changes to put "TZif" at the start of each timezone information file a rule has also been added to the Makefile so you can make zones to just recompile the zone information files (rather than doing a full "make install" with its other effects). Release data1997i - 1997-10-07 08:45:38 -0400 changes to Africa by Paul Eggert Release code1997g-data1997h - 1997-09-04 16:56:54 -0400 corrections for Uruguay (and other locations) Arthur David Olson's simple-minded fix allowing mktime to both correctly handle leap seconds and correctly handle tm_sec values upon which arithmetic has been performed. Release code1997f-data1997g - 1997-07-19 13:15:02 -0400 Paul Eggert's updates a small change to a function prototype; "Music" has been renamed "Arts.htm", HTMLified, and augmented to include information on Around the World in Eighty Days. Release code1997e-data1997f - 1997-05-03 18:52:34 -0400 fixes to zic's error handling changes inspired by the item circulated on Slovenia The description of Web resources has been HTMLified for browsing convenience. A new piece of tz-related music has been added to the "Music" file. Release code1997d-data1997e - 1997-03-29 12:48:52 -0500 Paul Eggert's latest suggestions Release code1997c-data1997d - 1997-03-07 20:37:54 -0500 changes to "zic.c" to correct performance of the "-s" option a new file "usno1997" Release data1997c - 1997-03-04 09:58:18 -0500 changes in Israel Release 1997b - 1997-02-27 18:34:19 -0500 The data file incorporates the 1997 leap second. The code file incorporates Arthur David Olson's take on the zic/multiprocessor/directory-creation situation. Release 1997a - 1997-01-21 09:11:10 -0500 Paul Eggert's Antarctica (and other changes) Arthur David Olson finessed the "getopt" issue by checking against both -1 and EOF (regardless of POSIX, SunOS 4.1.1's manual says -1 is returned while SunOS 5.5's manual says EOF is returned). Release code1996o-data1996n - 1996-12-27 21:42:05 -0500 Paul Eggert's latest changes Release code1996n - 1996-12-16 09:42:02 -0500 link snapping fix from Bruce Evans (via Garrett Wollman) Release data1996m - 1996-11-24 02:37:34 -0000 [tzdata1996m.tar.gz is missing!] Paul Eggert's batch of changes Release code1996m-data1996l - 1996-11-05 14:00:12 -0500 No functional changes here; the files have simply been changed to make more use of ISO style dates in comments. The names of the above files now include the year in full. Release code96l - 1996-09-08 17:12:20 -0400 tzcode96k was missing a couple of pieces. Release 96k - 1996-09-08 16:06:22 -0400 the latest round of changes from Paul Eggert the recent Year 2000 material Release code96j - 1996-07-30 13:18:53 -0400 Set sp->typecnt as suggested by Timothy Patrick Murphy. Release code96i - 1996-07-27 20:11:35 -0400 Paul's suggested patch for strftime %V week numbers Release data96i - 1996-07-01 18:13:04 -0400 "northamerica" and "europe" changes by Paul Eggert Release code96h - 1996-06-05 08:02:21 -0400 fix for handling transitions specified in Universal Time Some "public domain" notices have also been added. Release code96g - 1996-05-16 14:00:26 -0400 fix for the simultaneous-DST-and-zone-change challenge Release data96h - 1996-05-09 17:40:51 -0400 changes by Paul Eggert Release code96f-data96g - 1996-05-03 03:09:59 -0000 [tzcode96f.tar.gz + tzdata96g.tar.gz are both missing!] The changes get us some of the way to fixing the problems noted in Paul Eggert's letter yesterday (in addition to a few others). The approach has been to make zic a bit smarter about figuring out what time zone abbreviations apply just after the time specified in the "UNTIL" part of a zone line. Putting the smarts in zic means avoiding having transition times show up in both "Zone" lines and "Rule" lines, which in turn avoids multiple transition time entries in time zone files. (This also makes the zic input files such as "europe" a bit shorter and should ease maintenance.) Release data96f - 1996-04-19 19:20:03 -0000 [tzdata96f.tar.gz is missing!] The only changes are to the "northamerica" file; the time zone abbreviation for Denver is corrected to MST (and MDT), and the comments for Mexico have been updated. Release data96e - 1996-03-19 17:37:26 -0500 Proposals by Paul Eggert, in particular the Portugal change that comes into play at the end of this month. Release data96d - 1996-03-18 20:49:39 -0500 [not summarized] Release code96e - 1996-02-29 15:43:27 -0000 [tzcode96e.tar.gz is missing!] internationalization changes and the fix to the documentation for strftime Release code96d-data96c - 1996-02-12 11:05:27 -0500 The "code" file simply updates Bob Kridle's electronic address. The "data" file updates rules for Mexico. Release data96b - 1996-01-27 15:44:42 -0500 Kiribati change Release code96c - 1996-01-16 16:58:15 -0500 leap-year streamlining and binary-search changes fix to newctime.3 Release code96b - 1996-01-10 20:42:39 -0500 fixes and enhancements from Paul Eggert, including code that emulates the behavior of recent versions of the SunOS "date" command. Release 96a - 1996-01-06 09:08:24 -0500 Israel updates fixes to strftime.c for correct ISO 8601 week number generation, plus support for two new formats ('G' and 'g') to give ISO 8601 year numbers (which are not necessarily the same as calendar year numbers) Release code95i-data95m - 1995-12-21 12:46:47 -0500 The latest revisions from Paul Eggert are included, the usno1995 file has been updated, and a new file ("WWW") covering useful URLs has been added. Release code95h-data95l - 1995-12-19 18:10:12 -0500 A simplification of a macro definition, a change to data for Sudan, and (for last minute shoppers) notes in the "Music" file on the CD "Old Man Time". Release code95g-data95k - 1995-10-30 10:32:47 -0500 (slightly reformatted) 8-bit-clean proposed patch minor patch: US/Eastern -> America/New_York snapshot of the USNO's latest data ("usno1995") some other minor cleanups Release code95f-data95j - 1995-10-28 21:01:34 -0000 [tzcode95f.tar.gz + tzdata95j.tar.gz are both missing!] European cleanups support for 64-bit time_t's optimization in localtime.c Release code95e - 1995-10-13 13:23:57 -0400 the mktime change to scan from future to past when trying to find time zone offsets Release data95i - 1995-09-26 10:43:26 -0400 For Canada/Central, guess that the Sun customer's "one week too early" was just a approximation, and the true error is one month too early. This is consistent with the rest of Canada. Release data95h - 1995-09-21 11:26:48 -0400 latest changes from Paul Eggert Release code95d - 1995-09-14 11:14:45 -0400 the addition of a "Music" file, which documents four recorded versions of the tune "Save That Time". Release data95g - 1995-09-01 17:21:36 -0400 "yearistype" correction Release data95f - 1995-08-28 20:46:56 -0400 Paul Eggert's change to the australasia file Release data95e - 1995-07-08 18:02:34 -0400 The only change is a leap second at the end of this year. Thanks to Bradley White for forwarding news on the leap second. Release data95d - 1995-07-03 13:26:22 -0400 Paul Eggert's changes Release data95c - 1995-07-02 19:19:28 -0400 changes to "asia", "backward", "europe", and "southamerica" (read: northamericacentrics need not apply) Release code95c - 1995-03-13 14:00:46 -0500 one-line fix for sign extension problems in detzcode Release 95b - 1995-03-04 11:22:38 -0500 Minor changes in both: The "code" file contains a workaround for the lack of "unistd.h" in Microsoft C++ version 7. The "data" file contains a fixed "Link" for America/Shiprock. Release 94h - 1994-12-10 12:51:14 -0500 The files: * incorporate the changes to "zdump" and "date" to make changes to the "TZ" environment variable permanent; * incorporate the table changes by Paul Eggert; * include (and document) support for universal time specifications in data files - but do not (yet) include use of this feature in the data files. Think of this as "TZ Classic" - the software has been set up not to break if universal time shows up in its input, and data entries have been left as is so as not to break existing implementations. Release data94f - 1994-08-20 12:56:09 -0400 (with thanks!) the latest data updates from Paul Eggert Release data94e - 1994-06-04 13:13:53 -0400 [not summarized] Release code94g - 1994-05-05 12:14:07 -0400 fix missing "optind.c" and a reference to it in the Makefile Release code94f - 1994-05-05 13:00:33 -0000 [tzcode94f.tar.gz is missing!] changes to avoid overflow in difftime, as well as changes to cope with the 52/53 challenge in strftime Release code94e - 1994-03-30 23:32:59 -0500 change for the benefit of PCTS Release 94d - 1994-02-24 15:42:25 -0500 Avoid clashes with POSIX semantics for zones such as GMT+4. Some other very minor housekeeping is also present. Release code94c - 1994-02-10 08:52:40 -0500 Fix bug where mkdirs was broken unless you compile with -fwritable-strings (which is generally losing to do). Release 94b - 1994-02-07 10:04:33 -0500 work by Paul Eggert who notes: I found another book of time zone histories by E W Whitman; it's not as extensive as Shanks but has a few goodies of its own. I used it to update the tables. I also fixed some more as a result of correspondence with Adam David and Peter Ilieve, and move some stray links from 'europe' to 'backward'. I corrected some scanning errors in usno1989. As far as the code goes, I fixed zic to allow years in the range INT_MIN to INT_MAX; this fixed a few boundary conditions around 1900. And I cleaned up the zic documentation a little bit. Release data94a - 1994-02-03 08:58:54 -0500 It simply incorporates the recently announced leap second into the "leapseconds" file. Release 93g - 1993-11-22 17:28:27 -0500 Paul Eggert has provided a good deal of historic information (based on Shanks), and there are some code changes to deal with the buglets that crawled out in dealing with the new information. Release 93f - 1993-10-15 12:27:46 -0400 Paul Eggert's changes Release 93e - 1993-09-05 21:21:44 -0400 This has updated data for Israel, England, and Kwajalein. There's also an update to "zdump" to cope with Kwajalein's 24-hour jump. Thanks to Paul Eggert and Peter Ilieve for the changes. Release 93d - 1993-06-17 23:34:17 -0400 new fix and new data on Israel Release 93c - 1993-06-06 19:31:55 -0400 [not summarized] Release 93b - 1993-02-02 14:53:58 -0500 updated "leapseconds" file Release 93 - 1993-01-08 07:01:06 -0500 At kre's suggestion, the package has been split in two - a code piece (which also includes documentation) that's only of use to folks who want to recompile things and a data piece useful to anyone who can run "zic". The new version has a few changes to the data files, a few portability changes, and an off-by-one fix (with thanks to Tom Karzes at deshaw.com for providing a description and a solution). Release 92c - 1992-11-21 17:35:36 -0000 [tz92c.tar.Z is missing!] The fallout from the latest round of DST transitions. There are changes for Portugal, Saskatchewan, and "Pacific-New"; there's also a change to "zic.c" that makes it portable to more systems. Release 92 - 1992-04-25 18:17:03 -0000 [tz92.tar.Z is missing!] By popular demand (well, at any rate, following a request by kre at munnari) The 1989 update of the time zone package featured: * POSIXization (including interpretation of POSIX-style TZ environment variables, provided by Guy Harris), * ANSIfication (including versions of "mktime" and "difftime"), * SVIDulation (an "altzone" variable) * MACHination (the "gtime" function) * corrections to some time zone data (including corrections to the rules for Great Britain and New Zealand) * reference data from the United States Naval Observatory for folks who want to do additional time zones * and the 1989 data for Saudi Arabia. (Since this code will be treated as "part of the implementation" in some places and as "part of the application" in others, there's no good way to name functions, such as timegm, that are not part of the proposed ANSI C standard; such functions have kept their old, underscore-free names in this update.) And the "dysize" function has disappeared; it was present to allow compilation of the "date" command on old BSD systems, and a version of "date" is now provided in the package. The "date" command is not created when you "make all" since it may lack options provided by the version distributed with your operating system, or may not interact with the system in the same way the native version does. Since POSIX frowns on correct leap second handling, the default behavior of the "zic" command (in the absence of a "-L" option) has been changed to omit leap second information from its output files. ----- Notes This file contains copies of the part of each release announcement that talks about the changes in that release. The text has been adapted and reformatted for the purposes of this file. Traditionally a release R consists of a pair of tarball files, tzcodeR.tar.gz and tzdataR.tar.gz. However, some releases (e.g., code2010a, data2012c) consist of just one or the other tarball, and a few (e.g., code2012c-data2012d) have tarballs with mixed version numbers. Recent releases also come in an experimental format consisting of a single tarball tzdb-R.tar.lz with extra data. Release timestamps are taken from the release's commit (for newer, Git-based releases), from the newest file in the tarball (for older releases, where this info is available) or from the email announcing the release (if all else fails; these are marked with a time zone abbreviation of -0000 and an "is missing!" comment). Earlier versions of the code and data were not announced on the tz list and are not summarized here. This file is in the public domain. Local Variables: coding: utf-8 End:
/home/emeraadmin/www/node_modules/form-data/../summernote/../function-bind/../../4d695/tzdata.tar