tz-link.html revision 1.4
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<title>Sources for time zone and daylight saving time data</title>
5<meta charset="UTF-8">
6<style>
7pre {margin-left: 2em; white-space: pre-wrap;}
8</style>
9</head>
10<body>
11<h1>Sources for time zone and daylight saving time data</h1>
12<p>
13<a href="https://en.wikipedia.org/wiki/Time_zone">Time zone</a> and
14<a href="https://en.wikipedia.org/wiki/Daylight_saving_time">daylight-saving</a>
15rules are controlled by individual
16governments. They are sometimes changed with little notice, and their
17histories and planned futures are often recorded only fitfully. Here
18is a summary of attempts to organize and record relevant data in this
19area.
20</p>
21<h2 id="tzdb">The <code><abbr title="time zone">tz</abbr></code> database</h2>
22<p>
23The <a href="https://en.wikipedia.org/wiki/Public_domain">public-domain</a>
24time zone database contains code and data
25that represent the history of local time
26for many representative locations around the globe.
27It is updated periodically to reflect changes made by political bodies
28to time zone boundaries and daylight saving rules.
29This database (known as <code><abbr>tz</abbr></code>,
30<code><abbr>tzdb</abbr></code>, or <code>zoneinfo</code>)
31is used by several implementations,
32including
33<a href="https://www.gnu.org/software/libc/">the
34<abbr title="GNU's Not Unix">GNU</abbr>
35C Library</a> (used in
36<a href="https://en.wikipedia.org/wiki/Linux"><abbr>GNU</abbr>/Linux</a>),
37<a href="https://www.android.com">Android</a>,
38<a href="https://www.freebsd.org">Free<abbr
39title="Berkeley Software Distribution">BSD</abbr></a>,
40<a href="https://netbsd.org">Net<abbr>BSD</abbr></a>,
41<a href="https://www.openbsd.org">Open<abbr>BSD</abbr></a>,
42<a href="https://www.chromium.org/chromium-os">Chromium OS</a>,
43<a href="https://cygwin.com">Cygwin</a>,
44<a href="http://www.delorie.com/djgpp/"><abbr
45title="DJ's GNU Programming Platform">DJGPP</abbr></a>,
46<a href="https://en.wikipedia.org/wiki/MINIX">MINIX</a>,
47<a href="https://www.mysql.com">MySQL</a>,
48<a href="https://en.wikipedia.org/wiki/WebOS"><abbr
49title="Web Operating System">webOS</abbr></a>,
50<a href="https://ibm.com/aix"><abbr
51title="Advanced Interactive eXecutive">AIX</abbr></a>,
52<a href="https://en.wikipedia.org/wiki/BlackBerry_10">BlackBerry 10</a>,
53<a href="https://www.apple.com/ios/"><abbr
54title="iPhone OS">iOS</abbr></a>,
55<a href="https://www.apple.com/macos/">macOS</a>,
56<a href="https://www.microsoft.com/en-us/windows">Microsoft Windows</a>,
57<a href="https://www.hpe.com/info/openvms">Open<abbr
58title="Virtual Memory System">VMS</abbr></a>,
59<a href="https://www.oracle.com/database/index.html">Oracle Database</a>, and
60<a href="https://www.oracle.com/solaris">Oracle Solaris</a>.</p>
61<p>
62Each main entry in the database represents a <dfn>timezone</dfn>
63for a set of civil-time clocks that have all agreed since 1970.
64Timezones are typically identified by continent or ocean and then by the
65name of the largest city within the region containing the clocks.
66For example, <code>America/New_York</code>
67represents most of the <abbr title="United States">US</abbr> eastern time zone;
68<code>America/Phoenix</code> represents most of Arizona, which
69uses mountain time without daylight saving time (<abbr>DST</abbr>);
70<code>America/Detroit</code> represents most of Michigan, which uses
71eastern time but with different <abbr>DST</abbr> rules in 1975;
72and other entries represent smaller regions like Starke County,
73Indiana, which switched from central to eastern time in 1991
74and switched back in 2006.
75To use the database on an extended <a
76href="https://en.wikipedia.org/wiki/POSIX"><abbr
77title="Portable Operating System Interface">POSIX</abbr></a>
78implementation set the <code><abbr>TZ</abbr></code>
79environment variable to the location's full name,
80e.g., <code><abbr>TZ</abbr>="America/New_York"</code>.</p>
81<p>
82Associated with each timezone is a history of offsets from
83<a href="https://en.wikipedia.org/wiki/Universal_Time">Universal
84Time</a> (<abbr>UT</abbr>), which is <a
85href="https://en.wikipedia.org/wiki/Greenwich_Mean_Time">Greenwich Mean
86Time</a> (<abbr>GMT</abbr>) with days beginning at midnight;
87for timestamps after 1960 this is more precisely <a
88href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time">Coordinated
89Universal Time</a> (<abbr>UTC</abbr>).
90The database also records when daylight saving time was in use,
91along with some time zone abbreviations such as <abbr>EST</abbr>
92for Eastern Standard Time in the <abbr>US</abbr>.</p>
93<h2 id="download">Downloading the <code><abbr>tz</abbr></code> database</h2>
94<p>
95The following <a
96href="https://en.wikipedia.org/wiki/Unix_shell">shell</a> commands download
97the latest release's two
98<a href="https://en.wikipedia.org/wiki/Tar_(computing)">tarballs</a>
99to a <abbr>GNU</abbr>/Linux or similar host.</p>
100<pre><code>mkdir tzdb
101cd tzdb
102<a href="https://www.gnu.org/software/wget/">wget</a> https://www.iana.org/time-zones/repository/tzcode-latest.tar.gz
103wget https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz
104<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 -
105gzip -dc tzdata-latest.tar.gz | tar -xf -
106</code></pre>
107<p>Alternatively, the following shell commands download the same
108release in a single-tarball format containing extra data
109useful for regression testing:</p>
110<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>
111<a href="https://www.nongnu.org/lzip/">lzip</a> -dc tzdb-latest.tar.lz | tar -xf -
112</code></pre>
113<p>These commands use convenience links to the latest release
114of the <code><abbr>tz</abbr></code> database hosted by the
115<a href="https://www.iana.org/time-zones">Time Zone Database website</a>
116of the <a href="https://www.iana.org">Internet Assigned Numbers
117Authority (IANA)</a>.
118Older releases are in files named
119<code>tzcode<var>V</var>.tar.gz</code>,
120<code>tzdata<var>V</var>.tar.gz</code>, and
121<code>tzdb-<var>V</var>.tar.lz</code>,
122where <code><var>V</var></code> is the version.
123Since 1996, each version has been a four-digit year followed by
124lower-case letter (<samp>a</samp> through <samp>z</samp>,
125then <samp>za</samp> through <samp>zz</samp>, then <samp>zza</samp>
126through <samp>zzz</samp>, and so on).
127Since version 2016h, each release has contained a text file named
128"<samp>version</samp>" whose first (and currently only) line is the version.
129The releases are also available in an
130<a href="ftp://ftp.iana.org/tz/releases/"><abbr
131title="File Transfer Protocol">FTP</abbr> directory</a> via a
132less-secure protocol.</p>
133<p>Alternatively, a development repository of code and data can be
134retrieved from <a href="https://github.com">GitHub</a> via the shell
135command:</p>
136<pre><code><a href="https://git-scm.com">git</a> clone <a href="https://github.com/eggert/tz">https://github.com/eggert/tz</a>
137</code></pre>
138<p>
139Since version 2012e, each release has been tagged in development repositories.
140Untagged commits are less well tested and probably contain
141more errors.</p>
142<p>
143After obtaining the code and data files, see the
144<code>README</code> file for what to do next.
145The code lets you compile the <code><abbr>tz</abbr></code> source files into
146machine-readable binary files, one for each location. The binary files
147are in a special timezone information format (<dfn><abbr>TZif</abbr></dfn>).
148The code also lets
149you read a <abbr>TZif</abbr> file and interpret timestamps for that
150location.</p>
151<h2 id="changes">Changes to the <code><abbr>tz</abbr></code> database</h2>
152<p>
153The <code><abbr>tz</abbr></code> code and data
154are by no means authoritative. If you find errors, please
155send changes to <a href="mailto:tz@iana.org"><code>tz@iana.org</code></a>,
156the time zone mailing list. You can also <a
157href="https://mm.icann.org/mailman/listinfo/tz">subscribe</a> to it
158and browse the <a
159href="https://mm.icann.org/pipermail/tz/">archive of old
160messages</a>.</p>
161<p>
162If your government plans to change its time zone boundaries or
163daylight saving rules, inform <code>tz@iana.org</code> well in
164advance, as this will coordinate updates to many cell phones,
165computers, and other devices around the world. With
166less than a year's notice there is a good chance that some
167computer-based clocks will operate incorrectly after the change, due
168to delays in propagating updates to software and data. The shorter
169the notice, the more likely clock problems will arise; see "<a
170href="https://codeofmatt.com/2016/04/23/on-the-timing-of-time-zone-changes/">On
171the Timing of Time Zone Changes</a>" for examples.
172</p>
173<p>
174Changes to the <code><abbr>tz</abbr></code> code and data are often
175propagated to clients via operating system updates, so
176client <code><abbr>tz</abbr></code> data can often be corrected by
177applying these updates. With GNU/Linux and similar systems, if your
178maintenance provider has not yet adopted the
179latest <code><abbr>tz</abbr></code> data, you can often short-circuit
180the process by tailoring the generic instructions in
181the <code><abbr>tz</abbr> README</code> file and installing the latest
182data yourself. System-specific instructions for installing the
183latest <code><abbr>tz</abbr></code> data have also been published
184for <a href="https://www.ibm.com/developerworks/aix/library/au-aix-olson-time-zone/index.html"><abbr>AIX</abbr></a>,
185<a
186href="https://play.google.com/store/apps/details?id=com.google.android.timezone.data">Android</a>,
187<a
188href="http://userguide.icu-project.org/datetime/timezone"><abbr
189title="International Components for Unicode">ICU</abbr></a>,
190<a href="https://developer.ibm.com/javasdk/support/dst/jtzu/"><abbr>IBM</abbr></a>
191and <a
192href="https://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">Oracle</a>
193Java, <a href="https://www.joda.org/joda-time/tz_update.html">Joda-Time</a>, <a
194href="https://dev.mysql.com/doc/refman/en/time-zone-support.html">MySQL</a>,
195and <a
196href="https://nodatime.org/userguide/tzdb">Noda Time</a> (see below).
197</p>
198<p>Sources for the <code><abbr>tz</abbr></code> database are
199<a href="https://en.wikipedia.org/wiki/UTF-8"><abbr
200title="Unicode Transformation Format 8-bit">UTF-8</abbr></a>
201<a href="https://en.wikipedia.org/wiki/Text_file">text files</a>
202with lines terminated by <a href="https://en.wikipedia.org/wiki/Newline"><abbr
203title="linefeed">LF</abbr></a>,
204which can be modified by common text editors such
205as <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>,
206<a href="https://wiki.gnome.org/Apps/Gedit">gedit</a>, and
207<a href="https://www.vim.org">vim</a>.
208Specialized source-file editing can be done via the
209<a href="https://packagecontrol.io/packages/zoneinfo">Sublime
210zoneinfo</a> package for <a
211href="https://www.sublimetext.com">Sublime Text</a> and the <a
212href="https://marketplace.visualstudio.com/items?itemName=gilmoreorless.vscode-zoneinfo">VSCode
213zoneinfo</a> extension for <a href="https://code.visualstudio.com">Visual
214Studio Code</a>.
215</p>
216<p>
217For further information about updates, please see
218<a href="https://tools.ietf.org/html/rfc6557">Procedures for
219Maintaining the Time Zone Database</a> (Internet <abbr
220title="Request For Comments">RFC</abbr> 6557). More detail can be
221found in <a href="theory.html">Theory and pragmatics of the tz code and data</a>.
222<a href="https://a0.github.io/a0-tzmigration/">A0 TimeZone Migration</a>
223displays changes between recent <code><abbr>tzdb</abbr></code> versions.
224</p>
225<h2 id="commentary">Commentary on the <code><abbr>tz</abbr></code> database</h2>
226<ul>
227<li>The article
228<a href="https://en.wikipedia.org/wiki/Tz_database">tz database</a> is
229an encyclopedic summary.</li>
230<li><a href="tz-how-to.html">How to Read the
231tz Database Source Files</a> explains the <code><abbr>tz</abbr></code>
232database format.</li>
233<li><a
234href="https://blog.jonudell.net/2009/10/23/a-literary-appreciation-of-the-olsonzoneinfotz-database/">A
235literary appreciation of the Olson/Zoneinfo/tz database</a> comments on the
236database's style.</li>
237</ul>
238<h2 id="web">Web sites using recent versions of the
239<code><abbr>tz</abbr></code> database</h2>
240<p>
241These are listed roughly in ascending order of complexity and fanciness.
242</p>
243<ul>
244<li><a href="https://time.is">Time.is</a> shows locations'
245time and zones.</li>
246<li><a href="https://www.timejones.com">TimeJones.com</a>,
247<a href="https://timezoneconverterapp.com">Time Zone Converter</a> and
248<a href="http://worldclock.com">The World Clock</a>
249are time zone converters.</li>
250<li><a
251href="http://twiki.org/cgi-bin/xtra/tzdatepick.html">Date and Time Gateway</a>
252lets you see the <code><abbr>TZ</abbr></code> values directly.</li>
253<li><a
254href="http://www.convertit.com/Go/ConvertIt/World_Time/Current_Time.ASP">Current
255Time in 1000 Places</a> uses descriptions of the values.</li>
256<li><a href="http://www.timezoneconverter.com/cgi-bin/tzc.tzc">Time Zone
257Converter</a>
258uses a pulldown menu.</li>
259<li><a href="http://home.kpn.nl/vanadovv/time/TZworld.html">Complete
260timezone information for all countries</a> displays tables of DST rules.
261<li><a href="https://www.timeanddate.com/worldclock/">The World Clock &ndash;
262Worldwide</a> lets you sort zone names and convert times.</li>
263<li><a href="https://24timezones.com">24TimeZones</a> has a world
264time map and a time converter.</li>
265<li><a href="https://www.zeitverschiebung.net/en/">Time Difference</a>
266calculates the current time difference between locations.</li>
267<li><a href="http://www.wx-now.com">Weather Now</a> and
268<a href="http://www.thetimenow.com">The Time Now</a> list the weather too.</li>
269</ul>
270<h2 id="protocols">Network protocols for <code><abbr>tz</abbr></code> data</h2>
271<ul>
272<li>The <a href="https://www.ietf.org">Internet Engineering Task Force</a>'s
273<a href="https://datatracker.ietf.org/wg/tzdist/charter/">Time Zone Data
274Distribution Service (tzdist) working group</a> defined <a
275href="https://tools.ietf.org/html/rfc7808">TZDIST</a>
276(Internet <abbr>RFC</abbr> 7808), a time zone data distribution service,
277along with <a href="https://tools.ietf.org/html/rfc7809">CalDAV</a>
278(Internet <abbr>RFC</abbr> 7809), a calendar access protocol for
279transferring time zone data by reference.
280The <a href="https://www.ietf.org/mailman/listinfo/tzdist-bis">tzdist-bis
281mailing list</a> discusses two Internet drafts: <a
282id="TZDIST-Geolocate"
283href="https://tools.ietf.org/html/draft-murchison-tzdist-geolocate">TZDIST
284Geolocate Extension</a> lets a client determine its timezone
285from its geographic location using a <a
286href="https://tools.ietf.org/html/rfc5870">'geo' URI</a>, and
287<a href="https://tools.ietf.org/html/draft-murchison-tzdist-tzif">The
288Time Zone Information Format (<abbr>TZif</abbr>)</a> specifies the format of
289<abbr>TZif</abbr> data.</li>
290<li>The <a href="https://tools.ietf.org/html/rfc5545">
291Internet Calendaring and Scheduling Core Object Specification
292(iCalendar)</a> (Internet <abbr>RFC</abbr> 5445)
293covers time zone
294data; see its VTIMEZONE calendar component.
295The iCalendar format requires specialized parsers and generators; a
296variant <a href="https://tools.ietf.org/html/rfc6321">xCal</a>
297(Internet <abbr>RFC</abbr> 6321) uses
298<a href="https://www.w3.org/XML/"><abbr
299title="Extensible Markup Language">XML</abbr></a> format, and a variant
300<a href="https://tools.ietf.org/html/rfc7265">jCal</a>
301(Internet <abbr>RFC</abbr> 7265)
302uses <a href="https://www.json.org"><abbr
303title="JavaScript Object Notation">JSON</abbr></a> format.</li>
304</ul>
305<h2 id="compilers">Other <code><abbr>tz</abbr></code> compilers</h2>
306<ul>
307<li><a href="https://sourceforge.net/projects/vzic/">Vzic</a> is a <a
308href="https://en.wikipedia.org/wiki/C_%28programming_language%29">C</a>
309program that compiles
310<code><abbr>tz</abbr></code> source into iCalendar-compatible VTIMEZONE files.
311Vzic is freely
312available under the <a
313href="https://www.gnu.org/copyleft/gpl.html"><abbr>GNU</abbr>
314General Public License (<abbr
315title="General Public License">GPL</abbr>)</a>.</li>
316<li><a href="https://sourceforge.net/projects/tzical/">tziCal &ndash; tz
317database conversion utility</a> is like Vzic, except for the <a
318href="https://www.microsoft.com/net">.NET framework</a>
319and with a <abbr>BSD</abbr>-style license.</li>
320<li><a
321href="https://metacpan.org/release/DateTime-TimeZone">DateTime::TimeZone</a>
322contains a script <code>parse_olson</code> that compiles
323<code><abbr>tz</abbr></code> source into <a href="https://www.perl.org">Perl</a>
324modules. It is part of the Perl <a
325href="https://github.com/houseabsolute/DateTime.pm/wiki">DateTime Project</a>,
326which is freely
327available under both the <abbr>GPL</abbr> and the Perl Artistic
328License. DateTime::TimeZone also contains a script
329<code>tests_from_zdump</code> that generates test cases for each clock
330transition in the <code><abbr>tz</abbr></code> database.</li>
331<li>The <a href="https://howardhinnant.github.io/date/tz.html">Time Zone
332Database Parser</a> is a
333<a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> parser and
334runtime library that is <a
335href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0355r4.html">moving
336forward</a> for inclusion in the next iteration of <a
337href="https://isocpp.org/std/the-standard"><em><abbr
338title="International Organization for Standardization">ISO</abbr>
339International Standard ISO/IEC 14882:2017(E) &ndash; Programming
340Language C++</em></a>.
341It is freely available under the
342<abbr title="Massachusetts Institute of Technology">MIT</abbr> license.</li>
343<li><a id="ICU" href="http://site.icu-project.org">International Components for
344Unicode (<abbr>ICU</abbr>)</a> contains C/C++ and <a
345href="https://en.wikipedia.org/wiki/Java_%28programming_language%29">Java</a>
346libraries for internationalization that
347has a compiler from <code><abbr>tz</abbr></code> source
348and from <abbr title="Common Locale Data Repository">CLDR</abbr> data
349(mentioned <a href="#CLDR">below</a>)
350into an <abbr>ICU</abbr>-specific format.
351<abbr>ICU</abbr> is freely available under a
352<abbr>BSD</abbr>-style license.</li>
353<li>The <a href="https://github.com/lau/tzdata">Tzdata</a> package for
354the <a href="https://elixir-lang.org">Elixir</a> language downloads
355and compiles tz source and exposes <abbr
356title="Application Program Interface">API</abbr>s for use. It is
357freely available under the <abbr>MIT</abbr> license.</li>
358<li>Java-based compilers and libraries include:
359<ul>
360<li>The <a
361href="https://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">TZUpdater
362tool</a> compiles <code><abbr>tz</abbr></code> source into the format used by
363Oracle Java.</li>
364<li>The <a
365href="https://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html">Java
366SE <code>java.time</code> <abbr>API</abbr></a> in Java 8 and later
367can be supplemented by <a
368href="https://www.threeten.org/threeten-extra/">ThreeTen-Extra</a>,
369which is freely available under a <abbr>BSD</abbr>-style license.</li>
370<li><a href="https://www.joda.org/joda-time/">Joda-Time &ndash; Java date
371and time <abbr>API</abbr></a> contains a class
372<code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles
373<code><abbr>tz</abbr></code> source into a binary format. It inspired
374Java 8 <code>java.time</code>, which its users should migrate to once
375they can assume Java 8 or later. It is available under the <a
376href="https://www.apache.org/licenses/LICENSE-2.0">Apache License</a>.</li>
377<li><a href="https://github.com/MenoData/Time4A">Time4A: Advanced date and
378time library for Android</a> and
379<a href="https://github.com/MenoData/Time4J/">Time4J: Advanced date,
380time and interval library for Java</a> compile
381<code><abbr>tz</abbr></code> source into a binary format.
382Time4A is available under the Apache License and Time4J is
383available under the <a
384href="https://www.gnu.org/copyleft/lesser.html"><abbr>GNU</abbr> Lesser
385General Public License (<abbr title="Lesser General Public
386License">LGPL</abbr>)</a>.</li>
387<li><abbr>ICU</abbr> (mentioned <a href="#ICU">above</a>) contains compilers and
388Java-based libraries.</li>
389</ul>
390<li><a href="https://nodatime.org">Noda Time &ndash; Date and
391time <abbr>API</abbr> for .NET</a>
392is like Joda-Time and Time4J, but for the .NET framework instead of Java.
393It is freely available under the Apache License.</li>
394<li><a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>-based
395compilers and libraries include:
396<ul>
397<li><a
398href="https://github.com/kshetline/compact-time-zone-generator">CompactTimeZoneGenerator</a>
399compiles time zone data into a compact form designed for
400JavaScript. It is freely available under a combination of
401the <abbr>MIT</abbr> license and the Apache License.</li>
402<li><a href="https://momentjs.com/timezone/">Moment Timezone</a> is a
403plugin for the <a href="https://momentjs.com">Moment.js</a> date
404manipulation library. It is freely available under the <abbr>MIT</abbr>
405license.</li>
406<li><a href="https://github.com/mde/timezone-js">TimezoneJS.Date</a>'s
407<abbr>API</abbr> is upward compatible with standard JavaScript
408Dates. It is freely available under the Apache License.</li>
409<li><a href="https://github.com/sproutsocial/walltime-js">Walltime-js</a>
410translates <abbr>UT</abbr> to local time. It is freely available under
411the <abbr>MIT</abbr> license.</li>
412</ul>
413<li><a href="https://github.com/JuliaTime/">JuliaTime</a> contains a
414compiler from <code><abbr>tz</abbr></code> source into
415<a href="https://julialang.org/">Julia</a>. It is freely available
416under the <abbr>MIT</abbr> license.</li>
417<li><a href="https://github.com/pavkam/tzdb">Delphi/<abbr
418title="Free Pascal Compiler">FPC</abbr> Time Zone Database</a>
419compiles from <code><abbr>tz</abbr></code> source into
420<a href="https://en.wikipedia.org/wiki/Object_Pascal">Object Pascal</a>
421as compiled by <a href="https://en.wikipedia.org/wiki/Delphi_(IDE)">Delphi</a>
422and <a
423href="https://en.wikipedia.org/wiki/Free_Pascal"><abbr>FPC</abbr></a>.
424It is freely available under a <abbr>BSD</abbr>-style license.</li>
425<li><a href="http://pytz.sourceforge.net">pytz &ndash; World Timezone
426Definitions for Python</a> compiles <code><abbr>tz</abbr></code> source into
427<a href="https://www.python.org">Python</a>.
428It is freely available under a <abbr>BSD</abbr>-style license.</li>
429<li><a href="https://tzinfo.github.io">TZInfo &ndash;
430Ruby Timezone Library</a>
431compiles <code><abbr>tz</abbr></code> source into
432<a href="https://www.ruby-lang.org/en/">Ruby</a>.
433It is freely available under the <abbr>MIT</abbr> license.</li>
434<li>The <a href="http://www.squeaksource.com/Chronos/">Chronos Date/Time
435Library</a> is
436a <a href="https://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a> class
437library that compiles <code><abbr>tz</abbr></code> source into a time
438zone repository whose format
439is either proprietary or an <abbr>XML</abbr>-encoded
440representation.</li>
441<li><a id="Tcl" href="https://tcl.tk">Tcl</a>
442contains a developer-oriented parser that compiles <code><abbr>tz</abbr></code>
443source into text files, along with a runtime that can read those
444files. Tcl is freely available under a <abbr>BSD</abbr>-style
445license.</li>
446</ul>
447<h2 id="TZif">Other <abbr>TZif</abbr> readers</h2>
448<ul>
449<li>The <a
450href="https://www.gnu.org/software/libc/"><abbr>GNU</abbr> C
451Library</a>
452has an independent, thread-safe implementation of
453a <abbr>TZif</abbr> file reader.
454This library is freely available under the LGPL
455and is widely used in <abbr>GNU</abbr>/Linux systems.</li>
456<li><a href="https://www.gnome.org">GNOME</a>'s
457<a href="https://developer.gnome.org/glib/">GLib</a> has
458a <abbr>TZif</abbr> file reader written in C that
459creates a <code>GTimeZone</code> object representing sets
460of <abbr>UT</abbr> offsets.
461It is freely available under the <abbr>LGPL</abbr>.</li>
462<li>The
463<a href="https://github.com/bloomberg/bde/wiki">BDE Standard Library</a>'s
464<code>baltzo::TimeZoneUtil</code> component contains a C++
465implementation of a <abbr>TZif</abbr> file reader. It is freely available under
466the Apache License.</li>
467<li><a href="https://github.com/google/cctz">CCTZ</a> is a simple C++
468library that translates between <abbr>UT</abbr> and civil time and
469can read <abbr>TZif</abbr> files. It is freely available under the Apache
470License.</li>
471<li><a href="http://bmsi.com/java/#TZ">ZoneInfo.java</a>
472is a <abbr>TZif</abbr> file reader written in Java.
473It is freely available under the <abbr>LGPL</abbr>.</li>
474<li><a href="https://github.com/derickr/timelib">Timelib</a> is a C
475library that reads <abbr>TZif</abbr> files and converts
476timestamps from one time zone or format to another.
477It is used by <a href="https://secure.php.net"><abbr
478title="PHP: Hypertext Preprocessor">PHP</abbr></a>,
479<a href="https://hhvm.com"><abbr title="HipHop Virtual Machine">HHVM</abbr></a>,
480and <a href="https://www.mongodb.com">MongoDB</a>.
481It is freely available under the <abbr>MIT</abbr> license.</li>
482<li><a href="https://github.com/bigeasy/timezone">Timezone</a> is a
483JavaScript library that supports date arithmetic that is time zone
484aware. It is freely available under the <abbr>MIT</abbr> license.</li>
485<li>Tcl, mentioned <a href="#Tcl">above</a>, also contains a
486<abbr>TZif</abbr> file reader.</li>
487<li><a href="https://metacpan.org/pod/DateTime::TimeZone::Tzfile">
488DateTime::TimeZone::Tzfile</a>
489is a <abbr>TZif</abbr> file reader written in Perl.
490It is freely available under the same terms as Perl
491(dual <abbr>GPL</abbr> and Artistic license).</li>
492<li>The
493public-domain <a href="https://github.com/dbaron/tz.js">tz.js</a>
494library contains a Python tool that
495converts <abbr>TZif</abbr> data into
496<abbr>JSON</abbr>-format data suitable for use
497in its JavaScript library for time zone conversion. Dates before 1970
498are not supported.</li>
499<li>The <a
500href="https://hackage.haskell.org/package/timezone-olson">timezone-olson</a>
501package contains <a href="https://www.haskell.org">Haskell</a> code that
502parses and uses <abbr>TZif</abbr> data. It is freely
503available under a <abbr>BSD</abbr>-style license.</li>
504</ul>
505<h2 id="software">Other <code><abbr>tz</abbr></code>-based time zone software</h2>
506<ul>
507<li><a href="https://foxclocks.org">FoxClocks</a>
508is an extension for <a href="https://www.google.com/chrome/">Google
509Chrome</a> and for <a
510href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Toolkit_API">Mozilla
511Toolkit</a> applications like <a
512href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a> and <a
513href="https://www.mozilla.org/en-US/thunderbird/">Thunderbird</a>.
514It displays multiple clocks in the application window, and has a mapping
515interface to <a href="https://www.google.com/earth/">Google Earth</a>.
516It is freely available under the <abbr>GPL</abbr>.</li>
517<li><a href="https://golang.org">Go programming language</a>
518implementations contain a copy of a 32-bit subset of a recent
519<code><abbr>tz</abbr></code> database in a
520Go-specific format.</li>
521<li><a
522href="http://users.skynet.be/Peter.Verthez/projects/intclock/">International
523clock (intclock)</a> is a clock that displays multiple time zones on
524<abbr>GNU</abbr>/Linux and similar systems. It is freely available
525under the <abbr>GPL</abbr>.</li>
526<li>Microsoft Windows 8.1
527and later has <code><abbr>tz</abbr></code> data and <abbr>CLDR</abbr>
528data (mentioned <a href="#CLDR">below</a>) used by the
529<a href="https://en.wikipedia.org/wiki/Windows_Runtime">Windows Runtime</a> /
530<a href="https://en.wikipedia.org/wiki/Universal_Windows_Platform">Universal Windows Platform</a> classes
531<a href="https://docs.microsoft.com/uwp/api/Windows.Globalization.DateTimeFormatting.DateTimeFormatter"><code>DateTimeFormatter</code></a> and
532<a href="https://docs.microsoft.com/uwp/api/windows.globalization.calendar"><code>Calendar</code></a>.
533<a id="System.TimeZoneInfo"
534href="https://blogs.msdn.microsoft.com/bclteam/2007/06/07/exploring-windows-time-zones-with-system-timezoneinfo-josh-free/">Exploring
535Windows Time Zones with <code>System.TimeZoneInfo</code></a> describes
536the older, proprietary method of Microsoft Windows 2000 and later,
537which stores time zone data in the
538<a href="https://en.wikipedia.org/wiki/Windows_Registry">Windows Registry</a>. The
539<a
540href="https://unicode.org/cldr/charts/latest/supplemental/zone_tzid.html">Zone &rarr;
541Tzid table</a> or <a
542href="https://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml"><abbr>XML</abbr>
543file</a> of the <abbr>CLDR</abbr> data maps proprietary zone IDs
544to <code><abbr>tz</abbr></code> names.
545These mappings can be performed programmatically via the <a href="https://github.com/mj1856/TimeZoneConverter">TimeZoneConverter</a> .NET library,
546or the ICU Java and C++ libraries mentioned <a href="#ICU">above</a>.
547<li><a
548href="https://www.oracle.com/java/index.html">Oracle
549Java</a> contains a copy of a subset of a recent
550<code><abbr>tz</abbr></code> database in a
551Java-specific format.</li>
552<li><a href="https://relativedata.com/page/Time-Zone-Master">Time Zone
553Master</a> is a Microsoft Windows clock program that can automatically
554download, compile and use <code><abbr>tz</abbr></code> releases.
555The Basic version is free.</li>
556<li><a
557href="http://veladg.com/velaterra.html">VelaTerra</a> is
558a macOS program. Its developers
559<a href="http://veladg.com/tzoffer.html">offer free
560licenses</a> to <code><abbr>tz</abbr></code> contributors.</li>
561</ul>
562<h2 id="other-dbs">Other time zone databases</h2>
563<ul>
564<li><a href="https://www.astro.com/atlas">Time-zone Atlas</a>
565is Astrodienst's Web version of Shanks and Pottenger's out-of-print
566time zone history atlases
567<a href="https://www.worldcat.org/oclc/468828649">for the US</a> and
568<a href="https://www.worldcat.org/oclc/76950459">for the world</a>,
569now published in <a
570href="https://astrocom.com/astrology-products/software/acs-atlas-software">software</a>
571form by <a href="https://astrocom.com">ACS-Starcrafts</a>.
572Although these extensive atlases
573<a href="https://astrologynewsservice.com/opinion/how-astrologers-contributed-to-the-information-age-a-brief-history-of-time/">were
574sources for much of the older <code><abbr>tz</abbr></code> data</a>,
575they are unreliable as Shanks appears to have
576guessed many <abbr>UT</abbr> offsets and transitions. The atlases cite no
577sources and do not indicate which entries are guesswork.</li>
578<li><a href="https://en.wikipedia.org/wiki/HP-UX">HP-UX</a> has a database in
579its own <code>tztab</code>(4) format.</li>
580<li>Microsoft Windows has proprietary data mentioned
581<a href="#System.TimeZoneInfo">above</a>.</li>
582<li><a href="https://www.worldtimeserver.com">World Time Server</a>
583is another time zone database.</li>
584<li>The <a
585href="https://www.iata.org/publications/store/Pages/standard-schedules-information.aspx">Standard
586Schedules Information Manual</a> of the
587International Air Transport Association
588gives current time zone rules for airports served by commercial aviation.</li>
589</ul>
590<h2 id="maps">Maps</h2>
591<ul>
592<li>The <a href="https://www.cia.gov/index.html">United States Central
593Intelligence Agency (<abbr
594title="Central Intelligence Agency">CIA</abbr>)</a> publishes a <a
595href="https://www.cia.gov/library/publications/the-world-factbook/graphics/ref_maps/physical/pdf/standard_time_zones_of_the_world.pdf">time
596zone map</a>; the
597<a
598href="https://www.lib.utexas.edu/maps/world.html">Perry&ndash;Casta&ntilde;eda
599Library Map Collection</a>
600of the University of Texas at Austin has copies of
601recent editions.
602The pictorial quality is good,
603but the maps do not indicate daylight saving time,
604and parts of the data are a few years out of date.</li>
605<li><a href="https://www.worldtimezone.com">Current time around the world
606and standard time zones map of the world</a>
607has several fancy time zone maps; it covers Russia particularly well.
608The maps' pictorial quality is not quite as good as the
609<abbr>CIA</abbr>'s
610but the maps are more up to date.</li>
611<li><a
612href="https://blog.poormansmath.net/how-much-is-time-wrong-around-the-world/">How
613much is time wrong around the world?</a> maps the difference between
614mean solar and standard time, highlighting areas such as western China
615where the two differ greatly. It's a bit out of date, unfortunately.</li>
616</ul>
617<h2 id="boundaries">Time zone boundaries</h2>
618<p>Geographical boundaries between timezones are available
619from several <a href="https://en.wikipedia.org/wiki/Geolocation">geolocation</a>
620services and other sources.</p>
621<ul>
622<li><a href="https://github.com/evansiroky/timezone-boundary-builder">Timezone
623Boundary Builder</a> extracts
624<a href="https://www.openstreetmap.org">Open Street Map</a> data to build
625boundaries of <code><abbr>tzdb</abbr></code> timezones.
626Its code is freely available under the <abbr>MIT</abbr> license, and
627its data entries are freely available under the
628<a href="https://opendatacommons.org/licenses/odbl/">Open Data Commons
629Open Database License</a>. The maps' borders appear to be quite accurate.</li>
630<li>Programmatic interfaces that map geographical coordinates via tz_world to
631<code><abbr>tzdb</abbr></code> timezones include:
632<ul>
633<li><a href="https://github.com/mj1856/GeoTimeZone">GeoTimeZone</a> is
634written in <a
635href="https://en.wikipedia.org/wiki/C_Sharp_(programming_language)">C#</a>
636and is freely available under the <abbr>MIT</abbr> license.</li>
637<li>The <a href="https://github.com/bradfitz/latlong">latlong package</a>
638is written in Go and is freely available under the Apache License.</li>
639<li><a href="https://github.com/drtimcooper/LatLongToTimezone">LatLongToTimezone</a>,
640in both Java and
641<a href="https://en.wikipedia.org/wiki/Swift_(programming_language)">Swift</a>
642form, is freely available under the MIT license.</li>
643<li>For <a href="https://nodejs.org/en/">Node.js</a>,
644the <a href="https://www.npmjs.com/package/geo-tz">geo-tz module</a>
645is freely available under the MIT license, and
646the <a href="https://www.npmjs.com/package/tz-lookup">tz-lookup module</a>
647is in the public domain.</li>
648<li>The <a
649href="https://github.com/MrMinimal64/timezonefinder">timezonefinder</a>
650library for Python is freely available under the MIT license.
651<li>The <a
652href="https://github.com/gunyarakun/timezone_finder">timezone_finder</a>
653library for Ruby is freely available under the MIT license.</li>
654</ul></li>
655<li>Free access via a network API, if you register a key, is provided by
656the <a
657href="https://www.geonames.org/export/web-services.html#timezone">GeoNames
658Timezone web service</a>, the <a
659href="https://developers.google.com/maps/documentation/timezone/intro">Google
660Maps Time Zone API</a>, and
661the <a href="https://timezonedb.com">Time Zone Database &amp; API</a>.
662Commercial network API access is provided
663by <a href="https://askgeo.com">AskGeo</a>
664and <a href="https://www.geogarage.com/blog/news-1/post/geogarage-time-zone-api-31">GeoGarage</a>.
665</li>
666<li>"<a
667href="https://stackoverflow.com/questions/16086962/how-to-get-a-time-zone-from-a-location-using-latitude-and-longitude-coordinates/16086964">How
668to get a time zone from a location using latitude and longitude
669coordinates?</a>" discusses other geolocation possibilities.</li>
670<li><a href="http://statoids.com/statoids.html">Administrative
671Divisions of Countries ("Statoids")</a> lists
672political subdivision data related to time zones.</li>
673<li><a href="http://home.kpn.nl/vanadovv/time/Multizones.html">Time
674zone boundaries for multizone countries</a> summarizes legal
675boundaries between time zones within countries.</li>
676<li><a href="http://manifold.net/info/freestuff.shtml">Manifold Software
677&ndash; GIS and Database Tools</a> includes a Manifold-format map of
678world time zone boundaries distributed under the
679<abbr>GPL</abbr>.</li>
680<li>A ship within the <a
681href="https://en.wikipedia.org/wiki/Territorial_waters">territorial
682waters</a> of any nation uses that nation's time. In international
683waters, time zone boundaries are meridians 15&deg; apart, except that
684<abbr>UT</abbr>&minus;12 and <abbr>UT</abbr>+12 are each 7.5&deg;
685wide and are separated by
686the 180&deg; meridian (not by the International Date Line, which is
687for land and territorial waters only). A captain can change ship's
688clocks any time after entering a new time zone; midnight changes are
689common.</li>
690</ul>
691<h2 id="civil">Civil time concepts and history</h2>
692<ul>
693<li><a href="https://www.nist.gov/pml/time-and-frequency-division/popular-links/walk-through-time">A
694Walk through Time</a>
695surveys the evolution of timekeeping.</li>
696<li>The history of daylight saving time is surveyed in <a
697href="http://www.webexhibits.org/daylightsaving/">About Daylight
698Saving Time &ndash; History, rationale, laws &amp; dates</a> and summarized in
699<a href="http://seizethedaylight.com/dst/">A Brief
700History of Daylight Saving Time</a>.</li>
701<li><a href="https://www.laphamsquarterly.org/roundtable/time-lords">Time
702Lords</a> discusses how authoritarians manipulate civil time.</li>
703<li><a href="https://www.w3.org/TR/timezone/">Working with Time Zones</a>
704contains guidelines and best practices for software applications that
705deal with civil time.</li>
706<li><a href="https://www.staff.science.uu.nl/~gent0113/idl/idl.htm">A History of
707the International Date Line</a> tells the story of the most important
708time zone boundary.</li>
709<li><a href="http://statoids.com/tconcept.html">Basic Time
710Zone Concepts</a> discusses terminological issues behind time zones.</li>
711</ul>
712<h2 id="national">National histories of legal time</h2>
713<dl>
714<dt>Australia</dt>
715<dd>The Parliamentary Library has commissioned a <a
716href="https://www.aph.gov.au/binaries/library/pubs/rp/2009-10/10rp10.pdf">research
717paper on daylight saving time in Australia</a>.
718The Bureau of Meteorology publishes a list of <a
719href="http://www.bom.gov.au/climate/averages/tables/dst_times.shtml">Implementation
720Dates of Daylight Savings Time within Australia</a>.</dd>
721<dt>Belgium</dt>
722<dd>The Royal Observatory of Belgium maintains a table of <a
723href="https://www.astro.oma.be/GENERAL/INFO/nli001a.html"
724hreflang="nl">time in Belgium (in Dutch)</a>.</dd>
725<dt>Brazil</dt>
726<dd>The Time Service Department of the National Observatory
727records <a href="http://pcdsh01.on.br/DecHV.html"
728hreflang="pt-BR">Brazil's daylight saving time decrees (in
729Portuguese)</a>.</dd>
730<dt>Canada</dt>
731<dd>National Research Council Canada publishes current
732and some older information about <a
733href="https://www.nrc-cnrc.gc.ca/eng/services/time/time_zones.html">time
734zones &amp; daylight saving time</a>.</dd>
735<dt>Chile</dt>
736<dd>The Hydrographic and Oceanographic Service of the Chilean Navy publishes a
737<a href="https://www.horaoficial.cl/historia_hora.html" hreflang="es">history of
738Chile's official time (in Spanish)</a>.</dd>
739<dt>China</dt>
740<dd>The Hong Kong Observatory maintains a
741<a href="https://www.hko.gov.hk/gts/time/Summertime.htm">history of
742 summer time in Hong Kong</a>,
743and Macau's Meteorological and Geophysical Bureau maintains a <a
744href="http://www.smg.gov.mo/smg/geophysics/e_t_Summer%20Time.htm">similar
745history for Macau</a>.
746Unfortunately the latter is incomplete and has errors.</dd>
747<dt>Czech Republic</dt>
748<dd><a href="https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas"
749hreflang="cs">When daylight saving time starts and ends (in Czech)</a>
750summarizes and cites historical DST regulations.</dd>
751<dt>Germany</dt>
752<dd>The National Institute for Science and Technology maintains the <a
753href="https://www.ptb.de/cms/en/fachabteilungen/abt4/fb-44/ag-441/realisation-of-legal-time-in-germany.html">Realisation
754of Legal Time in Germany</a>.</dd>
755<dt>Israel</dt>
756<dd>The Interior Ministry periodically issues <a
757href="ftp://ftp.cs.huji.ac.il/pub/tz/announcements"
758hreflang="he">announcements (in Hebrew)</a>.</dd>
759<dt>Italy</dt>
760<dd>The National Institute of Metrological Research maintains a
761<a href="http://oldsite.inrim.it/res/tf/ora_legale_i.shtml" hreflang="it">table
762of civil time (in Italian)</a>.</dd>
763<dt>Malaysia</dt>
764<dd>See Singapore <a href="#Singapore">below</a>.</dd>
765<dt>Mexico</dt>
766<dd>The Investigation and Analysis Service of the Mexican Library of
767Congress has published a <a
768href="http://www.diputados.gob.mx/bibliot/publica/inveyana/polisoc/horver/index.htm"
769hreflang="es">history of Mexican local time (in Spanish)</a>.</dd>
770<dt>Netherlands</dt>
771<dd><a href="https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm"
772hreflang="nl">Legal time in the Netherlands (in Dutch)</a>
773covers the history of local time in the Netherlands from ancient times.</dd>
774<dt>New Zealand</dt>
775<dd>The Department of Internal Affairs maintains a brief <a
776href="https://www.dia.govt.nz/Daylight-Saving-History">History of
777Daylight Saving</a>. The privately-maintained <a
778href="http://astrologyschool.com/nztime.html">History of New Zealand
779time</a> has more details.</dd>
780<dt>Singapore</dt>
781<dd><a id="Singapore"
782href="http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html">Why
783is Singapore in the "Wrong" Time Zone?</a> details the
784history of legal time in Singapore and Malaysia.</dd>
785<dt>United Kingdom</dt>
786<dd><a
787href="https://www.polyomino.org.uk/british-time/">History of
788legal time in Britain</a> discusses in detail the country
789with perhaps the best-documented history of clock adjustments.
790The National Physical Laboratory also maintains an <a
791href="http://www.npl.co.uk/educate-explore/what-is-time/archive-of-summer-time-dates">Archive
792of Summer time dates</a>.</dd>
793<dt>United States</dt>
794<dd>The Department of Transportation's <a
795href="https://www.transportation.gov/regulations/recent-time-zone-proceedings">Recent
796Time Zone Proceedings</a> lists changes to time zone boundaries.</dd>
797<dt>Uruguay</dt>
798<dd>The Oceanography, Hydrography, and Meteorology Service of the Uruguayan
799Navy (SOHMA) publishes an annual <a
800href="http://www.armada.mil.uy/Pagina/institucion/dimat/sohma/almanaque.html" hreflang="es">almanac
801(in Spanish)</a>.</dd>
802</dl>
803<h2 id="precision">Precision timekeeping</h2>
804<ul>
805<li><a
806href="http://leapsecond.com/hpan/an1289.pdf">The
807Science of Timekeeping</a> is a thorough introduction
808to the theory and practice of precision timekeeping.</li>
809<li><a href="https://doi.org/10.1007/978-3-319-59909-0">The Science of
810Time 2016</a> contains several freely-readable papers.</li>
811<li><a href="http://www.ntp.org"><abbr
812title="Network Time Protocol">NTP</abbr>: The Network
813Time Protocol</a> (Internet <abbr>RFC</abbr> 5905)
814discusses how to synchronize clocks of
815Internet hosts.</li>
816<li>The <a href="https://www.usenix.org/system/files/conference/nsdi18/nsdi18-geng.pdf"><span style="font-variant: small-caps">Huygens</span></a>
817family of software algorithms can achieve accuracy to a few tens of
818nanoseconds in scalable server farms without special hardware.</li>
819<li>The <a
820href="https://www.nist.gov/intelligent-systems-division/ieee-1588">Precision
821Time Protocol</a> (<abbr
822title="Institute of Electrical and Electronics Engineers">IEEE</abbr> 1588)
823can achieve submicrosecond clock accuracy on a local area network
824with special-purpose hardware.</li>
825<li><a
826href="https://tools.ietf.org/html/rfc4833">Timezone
827Options for <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr></a>
828(Internet <abbr>RFC</abbr> 4833)
829specifies a <a
830href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol"><abbr>DHCP</abbr></a>
831option for a server to configure
832a client's time zone and daylight saving settings automatically.</li>
833<li><a
834href="https://www.cv.nrao.edu/~rfisher/Ephemerides/times.html">Astronomical
835Times</a> explains more abstruse astronomical time scales like
836<abbr title="Terrestrial Dynamic Time">TDT</abbr>,
837<abbr title="Geocentric Coordinate Time">TCG</abbr>, and
838<abbr title="Barycentric Dynamic Time">TDB</abbr>.
839<a href="https://www.ucolick.org/~sla/leapsecs/timescales.html">Time
840Scales</a> goes into more detail, particularly for historical variants.</li>
841<li>The <a href="https://www.iau.org"><abbr
842title="International Astronomical Union">IAU</abbr></a>'s <a
843href="http://www.iausofa.org"><abbr
844title="Standards Of Fundamental Astronomy">SOFA</abbr></a>
845collection contains C and <a
846href="https://en.wikipedia.org/wiki/Fortran">Fortran</a>
847code for converting among time scales like
848<abbr title="International Atomic Time">TAI</abbr>,
849<abbr>TDB</abbr>, <abbr>TDT</abbr> and
850<abbr>UTC</abbr>.</li>
851<li><a
852href="https://www.giss.nasa.gov/tools/mars24/help/notes.html">Mars24 Sunclock
853&ndash; Time on Mars</a> describes Airy Mean Time (<abbr>AMT</abbr>) and the
854diverse local time
855scales used by each landed mission on Mars.</li>
856<li><a href="http://leapsecond.com">LeapSecond.com</a> is
857dedicated not only to leap seconds but to precise time and frequency
858in general. It covers the state of the art in amateur timekeeping, and
859how the art has progressed over the past few decades.</li>
860<li><a
861href="https://www.iers.org/IERS/EN/Publications/Bulletins/bulletins.html"><abbr
862title="International Earth Rotation and Reference Systems Service">IERS</abbr>
863Bulletins</a> contains official publications of the International
864Earth Rotation and Reference Systems Service, which decides when leap
865seconds occur. The <code><abbr>tz</abbr></code> code and data support leap seconds
866via an optional "<code>right</code>" configuration, as opposed to the
867default "<code>posix</code>" configuration.</li>
868<li><a href="https://developers.google.com/time/smear">Leap Smear</a>
869discusses how to gradually adjust <abbr>POSIX</abbr> clocks near a
870leap second so that they disagree with <abbr>UTC</abbr> by at most a
871half second, even though every <abbr>POSIX</abbr> minute has exactly
872sixty seconds. This approach works with the default <code><abbr>tz</abbr></code>
873"<code>posix</code>" configuration, is <a
874href="http://bk1.ntp.org/ntp-stable/README.leapsmear">supported</a> by
875the <abbr>NTP</abbr> reference implementation, and is used by major
876cloud service providers.</li>
877<li>The <a
878href="https://pairlist6.pair.net/mailman/listinfo/leapsecs">Leap
879Second Discussion List</a> covers <a
880href="https://www2.unb.ca/gge/Resources/gpsworld.november99.pdf">McCarthy
881and Klepczynski's 1999 proposal to discontinue leap seconds</a>,
882discussed further in
883<a href="https://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf">The
884leap second: its history and possible future</a>.
885<a href="https://www.ucolick.org/~sla/leapsecs/"><abbr>UTC</abbr>
886might be redefined
887without Leap Seconds</a> gives pointers on this
888contentious issue, which was active until 2015 and could become active
889again.</li>
890</ul>
891<h2 id="notation">Time notation</h2>
892<ul>
893<li>The <a id="CLDR" href="http://cldr.unicode.org">Unicode Common Locale Data
894Repository (<abbr>CLDR</abbr>) Project</a> has localizations for time
895zone names, abbreviations, identifiers, and formats. For example, it
896contains French translations for "Eastern European Summer Time",
897"<abbr title="Eastern European Summer Time">EEST</abbr>", and
898"Bucharest". Its
899<a href="https://unicode.org/cldr/charts/latest/by_type/">by-type
900charts</a> show these values for many locales. Data values are available in
901both <abbr title="Locale Data Markup Language">LDML</abbr>
902(an <abbr>XML</abbr> format) and <abbr>JSON</abbr>.
903<li>
904<a href="https://www.cl.cam.ac.uk/~mgk25/iso-time.html">A summary of
905the international standard date and time notation</a> is a good
906summary of
907<a
908href="https://www.iso.org/standard/40874.html"><em><abbr>ISO</abbr>
9098601:2004 &ndash; Data elements and interchange formats &ndash; Information
910interchange &ndash; Representation of dates and times</em></a>.</li>
911<li>
912<a href="https://www.w3.org/TR/xmlschema-2/#dateTime"><abbr>XML</abbr>
913Schema: Datatypes &ndash; dateTime</a> specifies a format inspired by
914<abbr>ISO</abbr> 8601 that is in common use in <abbr>XML</abbr> data.</li>
915<li><a href="https://tools.ietf.org/html/rfc5322#section-3.3">&sect;3.3 of
916Internet Message Format</a> (Internet <abbr>RFC</abbr> 5322)
917specifies the time notation used in email and <a
918href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"><abbr>HTTP</abbr></a>
919headers.</li>
920<li>
921<a href="https://tools.ietf.org/html/rfc3339">Date and Time
922on the Internet: Timestamps</a> (Internet <abbr>RFC</abbr> 3339)
923specifies an <abbr>ISO</abbr> 8601
924profile for use in new Internet
925protocols.</li>
926<li>
927<a href="https://www.hackcraft.net/web/datetime/">Date &amp; Time
928Formats on the Web</a> surveys web- and Internet-oriented date and time
929formats.</li>
930<li>Alphabetic time zone abbreviations should not be used as unique
931identifiers for <abbr>UT</abbr> offsets as they are ambiguous in
932practice. For example, in English-speaking North America
933"<abbr>CST</abbr>" denotes 6 hours behind <abbr>UT</abbr>,
934but in China it denotes 8 hours ahead of <abbr>UT</abbr>,
935and French-speaking North Americans prefer
936"<abbr title="Heure Normale du Centre">HNC</abbr>" to
937"<abbr>CST</abbr>". The <code><abbr>tz</abbr></code>
938database contains English abbreviations for many timestamps;
939unfortunately some of these abbreviations were merely the database maintainers'
940inventions, and these have been removed when possible.</li>
941<li>Numeric time zone abbreviations typically count hours east of
942<abbr>UT</abbr>, e.g., +09 for Japan and
943&minus;10 for Hawaii. However, the <abbr>POSIX</abbr>
944<code><abbr>TZ</abbr></code> environment variable uses the opposite convention.
945For example, one might use <code><abbr>TZ</abbr>="<abbr
946title="Japan Standard Time">JST</abbr>-9"</code> and
947<code><abbr>TZ</abbr>="<abbr title="Hawaii Standard Time">HST</abbr>10"</code>
948for Japan and Hawaii, respectively. If the
949<code><abbr>tz</abbr></code> database is available, it is usually better to use
950settings like <code><abbr>TZ</abbr>="Asia/Tokyo"</code> and
951<code><abbr>TZ</abbr>="Pacific/Honolulu"</code> instead, as this should avoid
952confusion, handle old timestamps better, and insulate you better from
953any future changes to the rules. One should never set
954<abbr>POSIX</abbr> <code><abbr>TZ</abbr></code> to a value like
955<code>"GMT-9"</code>, though, since this would incorrectly imply that
956local time is nine hours ahead of <abbr>UT</abbr> and the time zone
957is called "<abbr>GMT</abbr>".</li>
958</ul>
959<h2 id="see-also">See also</h2>
960<ul>
961<li><a href="theory.html">Theory and pragmatics of the tz code and data</a></li>
962<li><a href="tz-art.html">Time and the Arts</a></li>
963</ul>
964<hr>
965<address>
966This web page is in the public domain, so clarified as of
9672009-05-17 by Arthur David Olson.
968<br>
969Please send corrections to this web page to the
970<a href="mailto:tz@iana.org">time zone mailing list</a>.
971</address>
972</body>
973</html>
974