tz-link.html revision 1.3
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="http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">Oracle</a>
193Java, <a href="http://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="http://search.cpan.org/dist/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="http://datetime.perl.org">DateTime Project</a>, which is freely
326available under both the <abbr>GPL</abbr> and the Perl Artistic
327License. DateTime::TimeZone also contains a script
328<code>tests_from_zdump</code> that generates test cases for each clock
329transition in the <code><abbr>tz</abbr></code> database.</li>
330<li>The <a href="https://howardhinnant.github.io/date/tz.html">Time Zone
331Database Parser</a> is a
332<a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> parser and
333runtime library that is <a
334href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0355r4.html">moving
335forward</a> for inclusion in the next iteration of <a
336href="https://isocpp.org/std/the-standard"><em><abbr
337title="International Organization for Standardization">ISO</abbr>
338International Standard ISO/IEC 14882:2017(E) &ndash; Programming
339Language C++</em></a>.
340It is freely available under the
341<abbr title="Massachusetts Institute of Technology">MIT</abbr> license.</li>
342<li><a id="ICU" href="http://site.icu-project.org">International Components for
343Unicode (<abbr>ICU</abbr>)</a> contains C/C++ and <a
344href="https://en.wikipedia.org/wiki/Java_%28programming_language%29">Java</a>
345libraries for internationalization that
346has a compiler from <code><abbr>tz</abbr></code> source
347and from <abbr title="Common Locale Data Repository">CLDR</abbr> data
348(mentioned <a href="#CLDR">below</a>)
349into an <abbr>ICU</abbr>-specific format.
350<abbr>ICU</abbr> is freely available under a
351<abbr>BSD</abbr>-style license.</li>
352<li>The <a href="https://github.com/lau/tzdata">Tzdata</a> package for
353the <a href="https://elixir-lang.org">Elixir</a> language downloads
354and compiles tz source and exposes <abbr
355title="Application Program Interface">API</abbr>s for use. It is
356freely available under the <abbr>MIT</abbr> license.</li>
357<li>Java-based compilers and libraries include:
358<ul>
359<li>The <a
360href="http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">TZUpdater
361tool</a> compiles <code><abbr>tz</abbr></code> source into the format used by
362Oracle Java.</li>
363<li>The <a
364href="http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html">Java
3658 <code>java.time</code> <abbr>API</abbr></a> can be supplemented by <a
366href="http://www.threeten.org/threeten-extra/">ThreeTen-Extra</a>,
367which is freely available under a <abbr>BSD</abbr>-style license.</li>
368<li><a href="http://www.joda.org/joda-time/">Joda-Time &ndash; Java date
369and time <abbr>API</abbr></a> contains a class
370<code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles
371<code><abbr>tz</abbr></code> source into a binary format. It inspired
372Java 8 <code>java.time</code>, which its users should migrate to once
373they can assume Java 8 or later. It is available under the <a
374href="https://www.apache.org/licenses/LICENSE-2.0">Apache License</a>.</li>
375<li><a href="https://github.com/MenoData/Time4J/">Time4J &ndash;
376Advanced date, time and interval library for Java</a> contains a class
377<code>net.time4j.tool.TimezoneRepositoryCompiler</code> that compiles
378<code><abbr>tz</abbr></code> source into a binary format. Time4J is
379available under the <a
380href="https://www.gnu.org/copyleft/lesser.html"><abbr>GNU</abbr> Lesser
381General Public License (<abbr title="Lesser General Public
382License">LGPL</abbr>)</a>.</li>
383<li><abbr>ICU</abbr> (mentioned <a href="#ICU">above</a>) contains compilers and
384Java-based libraries.</li>
385</ul>
386<li><a href="https://nodatime.org">Noda Time &ndash; Date and
387time <abbr>API</abbr> for .NET</a>
388and <a href="http://www.babiej.demon.nl/Tz4Net/main.htm">TZ4Net</a>
389are similar to Joda-Time and Time4J, but for the .NET framework instead of
390Java. They are freely available under the
391Apache License
392and a <abbr>BSD</abbr>-style license, respectively.</li>
393<li><a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>-based
394compilers and libraries include:
395<ul>
396<li><a
397href="https://github.com/kshetline/compact-time-zone-generator">CompactTimeZoneGenerator</a>
398compiles time zone data into a compact form designed for
399JavaScript. It is freely available under a combination of
400the <abbr>MIT</abbr> license and the Apache License.</li>
401<li><a href="https://momentjs.com/timezone/">Moment Timezone</a> is a
402plugin for the <a href="https://momentjs.com">Moment.js</a> date
403manipulation library. It is freely available under the <abbr>MIT</abbr>
404license.</li>
405<li><a href="https://github.com/mde/timezone-js">TimezoneJS.Date</a>'s
406<abbr>API</abbr> is upward compatible with standard JavaScript
407Dates. It is freely available under the Apache License.</li>
408<li><a href="https://github.com/sproutsocial/walltime-js">Walltime-js</a>
409translates <abbr>UT</abbr> to local time. It is freely available under
410the <abbr>MIT</abbr> license.</li>
411</ul>
412<li><a href="https://github.com/JuliaTime/">JuliaTime</a> contains a
413compiler from <code><abbr>tz</abbr></code> source into
414<a href="https://julialang.org/">Julia</a>. It is freely available
415under the <abbr>MIT</abbr> license.</li>
416<li><a href="https://github.com/pavkam/tzdb">Delphi/<abbr
417title="Free Pascal Compiler">FPC</abbr> Time Zone Database</a>
418compiles from <code><abbr>tz</abbr></code> source into
419<a href="https://en.wikipedia.org/wiki/Object_Pascal">Object Pascal</a>
420as compiled by <a href="https://en.wikipedia.org/wiki/Delphi_(IDE)">Delphi</a>
421and <a
422href="https://en.wikipedia.org/wiki/Free_Pascal"><abbr>FPC</abbr></a>.
423It is freely available under a <abbr>BSD</abbr>-style license.</li>
424<li><a href="http://pytz.sourceforge.net">pytz &ndash; World Timezone
425Definitions for Python</a> compiles <code><abbr>tz</abbr></code> source into
426<a href="https://www.python.org">Python</a>.
427It is freely available under a <abbr>BSD</abbr>-style license.</li>
428<li><a href="https://tzinfo.github.io">TZInfo &ndash;
429Ruby Timezone Library</a>
430compiles <code><abbr>tz</abbr></code> source into
431<a href="https://www.ruby-lang.org/en/">Ruby</a>.
432It is freely available under the <abbr>MIT</abbr> license.</li>
433<li>The <a href="http://www.squeaksource.com/Chronos/">Chronos Date/Time
434Library</a> is
435a <a href="https://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a> class
436library that compiles <code><abbr>tz</abbr></code> source into a time
437zone repository whose format
438is either proprietary or an <abbr>XML</abbr>-encoded
439representation.</li>
440<li><a id="Tcl" href="https://tcl.tk">Tcl</a>
441contains a developer-oriented parser that compiles <code><abbr>tz</abbr></code>
442source into text files, along with a runtime that can read those
443files. Tcl is freely available under a <abbr>BSD</abbr>-style
444license.</li>
445</ul>
446<h2 id="TZif">Other <abbr>TZif</abbr> readers</h2>
447<ul>
448<li>The <a
449href="https://www.gnu.org/software/libc/"><abbr>GNU</abbr> C
450Library</a>
451has an independent, thread-safe implementation of
452a <abbr>TZif</abbr> file reader.
453This library is freely available under the LGPL
454and is widely used in <abbr>GNU</abbr>/Linux systems.</li>
455<li><a href="https://www.gnome.org">GNOME</a>'s
456<a href="https://developer.gnome.org/glib/">GLib</a> has
457a <abbr>TZif</abbr> file reader written in C that
458creates a <code>GTimeZone</code> object representing sets
459of <abbr>UT</abbr> offsets.
460It is freely available under the <abbr>LGPL</abbr>.</li>
461<li>The
462<a href="https://github.com/bloomberg/bde/wiki">BDE Standard Library</a>'s
463<code>baltzo::TimeZoneUtil</code> component contains a C++
464implementation of a <abbr>TZif</abbr> file reader. It is freely available under
465the Apache License.</li>
466<li><a href="https://github.com/google/cctz">CCTZ</a> is a simple C++
467library that translates between <abbr>UT</abbr> and civil time and
468can read <abbr>TZif</abbr> files. It is freely available under the Apache
469License.</li>
470<li><a href="http://bmsi.com/java/#TZ">ZoneInfo.java</a>
471is a <abbr>TZif</abbr> file reader written in Java.
472It is freely available under the <abbr>LGPL</abbr>.</li>
473<li><a href="https://github.com/derickr/timelib">Timelib</a> is a C
474library that reads <abbr>TZif</abbr> files and converts
475timestamps from one time zone or format to another.
476It is used by <a href="https://secure.php.net"><abbr
477title="PHP: Hypertext Preprocessor">PHP</abbr></a>,
478<a href="https://hhvm.com"><abbr title="HipHop Virtual Machine">HHVM</abbr></a>,
479and <a href="https://www.mongodb.com">MongoDB</a>.
480It is freely available under the <abbr>MIT</abbr> license.</li>
481<li><a href="https://github.com/bigeasy/timezone">Timezone</a> is a
482JavaScript library that supports date arithmetic that is time zone
483aware. It is freely available under the <abbr>MIT</abbr> license.</li>
484<li>Tcl, mentioned <a href="#Tcl">above</a>, also contains a
485<abbr>TZif</abbr> file reader.</li>
486<li><a href="http://search.cpan.org/perldoc?DateTime::TimeZone::Tzfile">
487DateTime::TimeZone::Tzfile</a>
488is a <abbr>TZif</abbr> file reader written in Perl.
489It is freely available under the same terms as Perl
490(dual <abbr>GPL</abbr> and Artistic license).</li>
491<li>The
492public-domain <a href="https://github.com/dbaron/tz.js">tz.js</a>
493library contains a Python tool that
494converts <abbr>TZif</abbr> data into
495<abbr>JSON</abbr>-format data suitable for use
496in its JavaScript library for time zone conversion. Dates before 1970
497are not supported.</li>
498<li>The <a
499href="https://hackage.haskell.org/package/timezone-olson">timezone-olson</a>
500package contains <a href="https://www.haskell.org">Haskell</a> code that
501parses and uses <abbr>TZif</abbr> data. It is freely
502available under a <abbr>BSD</abbr>-style license.</li>
503</ul>
504<h2 id="software">Other <code><abbr>tz</abbr></code>-based time zone software</h2>
505<ul>
506<li><a href="https://foxclocks.org">FoxClocks</a>
507is an extension for <a href="https://www.google.com/chrome/">Google
508Chrome</a> and for <a
509href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Toolkit_API">Mozilla
510Toolkit</a> applications like <a
511href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a> and <a
512href="https://www.mozilla.org/en-US/thunderbird/">Thunderbird</a>.
513It displays multiple clocks in the application window, and has a mapping
514interface to <a href="https://www.google.com/earth/">Google Earth</a>.
515It is freely available under the <abbr>GPL</abbr>.</li>
516<li><a href="https://golang.org">Go programming language</a>
517implementations contain a copy of a 32-bit subset of a recent
518<code><abbr>tz</abbr></code> database in a
519Go-specific format.</li>
520<li><a
521href="http://users.skynet.be/Peter.Verthez/projects/intclock/">International
522clock (intclock)</a> is a clock that displays multiple time zones on
523<abbr>GNU</abbr>/Linux and similar systems. It is freely available
524under the <abbr>GPL</abbr>.</li>
525<li>Microsoft Windows 8.1
526and later has <code><abbr>tz</abbr></code> data and <abbr>CLDR</abbr>
527data (mentioned <a href="#CLDR">below</a>) used by the
528<a href="https://en.wikipedia.org/wiki/Windows_Runtime">Windows Runtime</a> /
529<a href="https://en.wikipedia.org/wiki/Universal_Windows_Platform">Universal Windows Platform</a> classes
530<a href="https://docs.microsoft.com/uwp/api/Windows.Globalization.DateTimeFormatting.DateTimeFormatter"><code>DateTimeFormatter</code></a> and
531<a href="https://docs.microsoft.com/uwp/api/windows.globalization.calendar"><code>Calendar</code></a>.
532<a id="System.TimeZoneInfo"
533href="https://blogs.msdn.microsoft.com/bclteam/2007/06/07/exploring-windows-time-zones-with-system-timezoneinfo-josh-free/">Exploring
534Windows Time Zones with <code>System.TimeZoneInfo</code></a> describes
535the older, proprietary method of Microsoft Windows 2000 and later,
536which stores time zone data in the
537<a href="https://en.wikipedia.org/wiki/Windows_Registry">Windows Registry</a>. The
538<a
539href="https://unicode.org/cldr/charts/latest/supplemental/zone_tzid.html">Zone &rarr;
540Tzid table</a> or <a
541href="https://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml"><abbr>XML</abbr>
542file</a> of the <abbr>CLDR</abbr> data maps proprietary zone IDs
543to <code><abbr>tz</abbr></code> names.
544These mappings can be performed programmatically via the <a href="https://github.com/mj1856/TimeZoneConverter">TimeZoneConverter</a> .NET library,
545or the ICU Java and C++ libraries mentioned <a href="#ICU">above</a>.
546<li><a
547href="https://www.oracle.com/java/index.html">Oracle
548Java</a> contains a copy of a subset of a recent
549<code><abbr>tz</abbr></code> database in a
550Java-specific format.</li>
551<li><a href="https://relativedata.com/page/Time-Zone-Master">Time Zone
552Master</a> is a Microsoft Windows clock program that can automatically
553download, compile and use <code>tz</code> releases. The Basic version
554is free.</li>
555<li><a
556href="http://veladg.com/velaterra.html">VelaTerra</a> is
557a macOS program. Its developers
558<a href="http://veladg.com/tzoffer.html">offer free
559licenses</a> to <code><abbr>tz</abbr></code> contributors.</li>
560</ul>
561<h2 id="other-dbs">Other time zone databases</h2>
562<ul>
563<li><a href="https://www.astro.com/atlas">Time-zone Atlas</a>
564is Astrodienst's Web version of Shanks and Pottenger's
565time zone history atlases also published in <a
566href="https://astrocom.com/astrology-products/software/acs-atlas-software">software</a>
567form by <a href="https://astrocom.com">ACS-Starcrafts</a>.
568These atlases are extensive but unreliable, as Shanks appears to have
569guessed many <abbr>UT</abbr> offsets and transitions. The atlases cite no
570sources and do not indicate which entries are guesswork.</li>
571<li><a href="https://en.wikipedia.org/wiki/HP-UX">HP-UX</a> has a database in
572its own <code>tztab</code>(4) format.</li>
573<li>Microsoft Windows has proprietary data mentioned
574<a href="#System.TimeZoneInfo">above</a>.</li>
575<li><a href="https://www.worldtimeserver.com">World Time Server</a>
576is another time zone database.</li>
577<li>The <a
578href="https://www.iata.org/publications/store/Pages/standard-schedules-information.aspx">Standard
579Schedules Information Manual</a> of the
580International Air Transport Association
581gives current time zone rules for airports served by commercial aviation.</li>
582</ul>
583<h2 id="maps">Maps</h2>
584<ul>
585<li>The <a href="https://www.cia.gov/index.html">United States Central
586Intelligence Agency (<abbr
587title="Central Intelligence Agency">CIA</abbr>)</a> publishes a <a
588href="https://www.cia.gov/library/publications/the-world-factbook/graphics/ref_maps/physical/pdf/standard_time_zones_of_the_world.pdf">time
589zone map</a>; the
590<a
591href="https://www.lib.utexas.edu/maps/world.html">Perry&ndash;Casta&ntilde;eda
592Library Map Collection</a>
593of the University of Texas at Austin has copies of
594recent editions.
595The pictorial quality is good,
596but the maps do not indicate daylight saving time,
597and parts of the data are a few years out of date.</li>
598<li><a href="https://www.worldtimezone.com">Current time around the world
599and standard time zones map of the world</a>
600has several fancy time zone maps; it covers Russia particularly well.
601The maps' pictorial quality is not quite as good as the
602<abbr>CIA</abbr>'s
603but the maps are more up to date.</li>
604<li><a
605href="https://blog.poormansmath.net/how-much-is-time-wrong-around-the-world/">How
606much is time wrong around the world?</a> maps the difference between
607mean solar and standard time, highlighting areas such as western China
608where the two differ greatly. It's a bit out of date, unfortunately.</li>
609</ul>
610<h2 id="boundaries">Time zone boundaries</h2>
611<p>Geographical boundaries between timezones are available
612from several <a href="https://en.wikipedia.org/wiki/Geolocation">geolocation</a>
613services and other sources.</p>
614<ul>
615<li>Databases of time zone boundaries include:
616<ul>
617<li><a href="https://github.com/evansiroky/timezone-boundary-builder">Timezone
618Boundary Builder</a> extracts
619<a href="https://www.openstreetmap.org">Open Street Map</a> data to build
620boundaries of <code><abbr>tzdb</abbr></code> timezones.
621Its code is freely available under the <abbr>MIT</abbr> license, and
622its data entries are freely available under the
623<a href="https://opendatacommons.org/licenses/odbl/">Open Data Commons
624Open Database License</a>. The maps' borders appear to be quite accurate.</li>
625<li><a href="http://efele.net/maps/tz/"><abbr>TZ</abbr> timezones
626maps</a> contains <a
627href="https://en.wikipedia.org/wiki/Shapefile">shapefiles</a> of
628sets of <code><abbr>tzdb</abbr></code> timezones. This includes
629<a href="http://efele.net/maps/tz/world/">tz_world</a>, a shapefile
630for all the world's timezones. These maps are no longer maintained and
631are superseded by the Timezone Boundary Builder.</li>
632<li><a
633href="https://github.com/straup/whereonearth-timezone">Whereonearth-timezone</a>
634is in <a href="https://tools.ietf.org/html/rfc7946">GeoJSON</a> format
635(Internet <abbr>RFC</abbr> 7946), and combines the
636the tz_world shapefiles with the
637<a href="https://developer.yahoo.com/geo/geoplanet/">GeoPlanet</a>
638dataset.</li>
639</ul></li>
640<li>Programmatic interfaces that map geographical coordinates via tz_world to
641<code><abbr>tzdb</abbr></code> timezones include:
642<ul>
643<li><a href="https://github.com/mj1856/GeoTimeZone">GeoTimeZone</a> is
644written in <a
645href="https://en.wikipedia.org/wiki/C_Sharp_(programming_language)">C#</a>
646and is freely available under the <abbr>MIT</abbr> license.</li>
647<li>The <a href="https://github.com/bradfitz/latlong">latlong package</a>
648is written in Go and is freely available under the Apache License.</li>
649<li><a href="https://github.com/drtimcooper/LatLongToTimezone">LatLongToTimezone</a>,
650in both Java and
651<a href="https://en.wikipedia.org/wiki/Swift_(programming_language)">Swift</a>
652form, is freely available under the MIT license.</li>
653<li>For <a href="https://nodejs.org/en/">Node.js</a>,
654the <a href="https://www.npmjs.com/package/geo-tz">geo-tz module</a>
655is freely available under the MIT license, and
656the <a href="https://www.npmjs.com/package/tz-lookup">tz-lookup module</a>
657is in the public domain.</li>
658<li>The <a
659href="https://github.com/MrMinimal64/timezonefinder">timezonefinder</a>
660library for Python is freely available under the MIT license.
661<li>The <a
662href="https://github.com/gunyarakun/timezone_finder">timezone_finder</a>
663library for Ruby is freely available under the MIT license.</li>
664<li><a href="https://derickrethans.nl/what-time-is-it.html">What Time
665is It Here?</a> applies MongoDB
666geospatial query operators to shapefiles' data.</li>
667</ul></li>
668<li>Free access via a network API, if you register a key, is provided by
669the <a href="http://www.geonames.org/export/web-services.html#timezone">GeoNames Timezone web service</a>,
670the <a href="https://developers.google.com/maps/documentation/timezone/intro">Google Maps Time Zone API</a>, and
671the <a href="https://timezonedb.com">Time Zone Database &amp; API</a>.
672Commercial network API access is provided
673by <a href="https://askgeo.com">AskGeo</a>
674and <a href="https://www.geogarage.com/blog/news-1/post/geogarage-time-zone-api-31">GeoGarage</a>.
675</li>
676<li>"<a
677href="https://stackoverflow.com/questions/16086962/how-to-get-a-time-zone-from-a-location-using-latitude-and-longitude-coordinates/16086964">How
678to get a time zone from a location using latitude and longitude
679coordinates?</a>" discusses other geolocation possibilities.</li>
680<li><a href="http://statoids.com/statoids.html">Administrative
681Divisions of Countries ("Statoids")</a> lists
682political subdivision data related to time zones.</li>
683<li><a href="http://home.kpn.nl/vanadovv/time/Multizones.html">Time
684zone boundaries for multizone countries</a> summarizes legal
685boundaries between time zones within countries.</li>
686<li><a href="http://manifold.net/info/freestuff.shtml">Manifold Software
687&ndash; GIS and Database Tools</a> includes a Manifold-format map of
688world time zone boundaries distributed under the
689<abbr>GPL</abbr>.</li>
690<li>A ship within the <a
691href="https://en.wikipedia.org/wiki/Territorial_waters">territorial
692waters</a> of any nation uses that nation's time. In international
693waters, time zone boundaries are meridians 15&deg; apart, except that
694<abbr>UT</abbr>&minus;12 and <abbr>UT</abbr>+12 are each 7.5&deg;
695wide and are separated by
696the 180&deg; meridian (not by the International Date Line, which is
697for land and territorial waters only). A captain can change ship's
698clocks any time after entering a new time zone; midnight changes are
699common.</li>
700</ul>
701<h2 id="civil">Civil time concepts and history</h2>
702<ul>
703<li><a href="https://www.nist.gov/pml/time-and-frequency-division/popular-links/walk-through-time">A
704Walk through Time</a>
705surveys the evolution of timekeeping.</li>
706<li><a href="http://www.webexhibits.org/daylightsaving/">About Daylight
707Saving Time &ndash; History, rationale, laws &amp; dates</a>
708is an overall history of <abbr>DST</abbr>.</li>
709<li><a href="https://www.w3.org/TR/timezone/">Working with Time Zones</a>
710contains guidelines and best practices for software applications that
711deal with civil time.</li>
712<li><a href="http://seizethedaylight.com/dst/">A Brief
713History of Daylight Saving Time</a> summarizes some of the contentious
714history of <abbr>DST</abbr>.</li>
715<li><a href="https://www.staff.science.uu.nl/~gent0113/idl/idl.htm">A History of
716the International Date Line</a> tells the story of the most important
717time zone boundary.</li>
718<li><a href="http://statoids.com/tconcept.html">Basic Time
719Zone Concepts</a> discusses terminological issues behind time zones.</li>
720</ul>
721<h2 id="national">National histories of legal time</h2>
722<dl>
723<dt>Australia</dt>
724<dd>The Parliamentary Library has commissioned a <a
725href="https://www.aph.gov.au/binaries/library/pubs/rp/2009-10/10rp10.pdf">research
726paper on daylight saving time in Australia</a>.
727The Bureau of Meteorology publishes a list of <a
728href="http://www.bom.gov.au/climate/averages/tables/dst_times.shtml">Implementation
729Dates of Daylight Savings Time within Australia</a>.</dd>
730<dt>Belgium</dt>
731<dd>The Royal Observatory of Belgium maintains a table of <a
732href="http://www.astro.oma.be/GENERAL/INFO/nli001a.html"
733hreflang="nl">time in Belgium (in Dutch)</a>.</dd>
734<dt>Brazil</dt>
735<dd>The Time Service Department of the National Observatory
736records <a href="http://pcdsh01.on.br/DecHV.html"
737hreflang="pt-BR">Brazil's daylight saving time decrees (in
738Portuguese)</a>.</dd>
739<dt>Canada</dt>
740<dd>National Research Council Canada publishes current
741and some older information about <a
742href="https://www.nrc-cnrc.gc.ca/eng/services/time/time_zones.html">time
743zones &amp; daylight saving time</a>.</dd>
744<dt>Chile</dt>
745<dd>The Hydrographic and Oceanographic Service of the Chilean Navy publishes a
746<a href="http://www.horaoficial.cl/historia_hora.html" hreflang="es">history of
747Chile's official time (in Spanish)</a>.</dd>
748<dt>China</dt>
749<dd>The Hong Kong Observatory maintains a
750<a href="https://www.hko.gov.hk/gts/time/Summertime.htm">history of
751 summer time in Hong Kong</a>,
752and Macau's Meteorological and Geophysical Bureau maintains a <a
753href="http://www.smg.gov.mo/smg/geophysics/e_t_Summer%20Time.htm">similar
754history for Macau</a>.
755Unfortunately the latter is incomplete and has errors.</dd>
756<dt>Czech Republic</dt>
757<dd><a href="https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas"
758hreflang="cs">When daylight saving time starts and ends (in Czech)</a>
759summarizes and cites historical DST regulations.</dd>
760<dt>Germany</dt>
761<dd>The National Institute for Science and Technology maintains the <a
762href="https://www.ptb.de/cms/en/fachabteilungen/abt4/fb-44/ag-441/realisation-of-legal-time-in-germany.html">Realisation
763of Legal Time in Germany</a>.</dd>
764<dt>Israel</dt>
765<dd>The Interior Ministry periodically issues <a
766href="ftp://ftp.cs.huji.ac.il/pub/tz/announcements"
767hreflang="he">announcements (in Hebrew)</a>.</dd>
768<dt>Italy</dt>
769<dd>The National Institute of Metrological Research maintains a
770<a href="http://oldsite.inrim.it/res/tf/ora_legale_i.shtml">table of civil time
771(in Italian)</a>.</dd>
772<dt>Malaysia</dt>
773<dd>See Singapore <a href="#Singapore">below</a>.</dd>
774<dt>Mexico</dt>
775<dd>The Investigation and Analysis Service of the Mexican Library of
776Congress has published a <a
777href="http://www.diputados.gob.mx/bibliot/publica/inveyana/polisoc/horver/index.htm"
778hreflang="es">history of Mexican local time (in Spanish)</a>.</dd>
779<dt>Netherlands</dt>
780<dd><a href="https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm"
781hreflang="nl">Legal time in the Netherlands (in Dutch)</a>
782covers the history of local time in the Netherlands from ancient times.</dd>
783<dt>New Zealand</dt>
784<dd>The Department of Internal Affairs maintains a brief <a
785href="https://www.dia.govt.nz/Daylight-Saving-History">History of
786Daylight Saving</a>. The privately-maintained <a
787href="http://astrologyschool.com/nztime.html">History of New Zealand
788time</a> has more details.</dd>
789<dt>Singapore</dt>
790<dd><a id="Singapore"
791href="http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html">Why
792is Singapore in the "Wrong" Time Zone?</a> details the
793history of legal time in Singapore and Malaysia.</dd>
794<dt>United Kingdom</dt>
795<dd><a
796href="https://www.polyomino.org.uk/british-time/">History of
797legal time in Britain</a> discusses in detail the country
798with perhaps the best-documented history of clock adjustments.
799The National Physical Laboratory also maintains an <a
800href="http://www.npl.co.uk/educate-explore/what-is-time/archive-of-summer-time-dates">Archive
801of Summer time dates</a>.</dd>
802<dt>United States</dt>
803<dd>The Department of Transportation's <a
804href="https://www.transportation.gov/regulations/recent-time-zone-proceedings">Recent
805Time Zone Proceedings</a> lists changes to time zone boundaries.</dd>
806<dt>Uruguay</dt>
807<dd>The Oceanography, Hydrography, and Meteorology Service of the Uruguayan
808Navy (SOHMA) publishes an annual <a
809href="http://www.armada.mil.uy/Pagina/institucion/dimat/sohma/almanaque.html" hreflang="es">almanac
810(in Spanish)</a>.</dd>
811</dl>
812<h2 id="precision">Precision timekeeping</h2>
813<ul>
814<li><a
815href="http://leapsecond.com/hpan/an1289.pdf">The
816Science of Timekeeping</a> is a thorough introduction
817to the theory and practice of precision timekeeping.</li>
818<li><a href="https://doi.org/10.1007/978-3-319-59909-0">The Science of
819Time 2016</a> contains several freely-readable papers.</li>
820<li><a href="http://www.ntp.org"><abbr
821title="Network Time Protocol">NTP</abbr>: The Network
822Time Protocol</a> (Internet <abbr>RFC</abbr> 5905)
823discusses how to synchronize clocks of
824Internet hosts.</li>
825<li>The <a href="https://www.usenix.org/system/files/conference/nsdi18/nsdi18-geng.pdf"><span style="font-variant: small-caps">Huygens</span></a>
826family of software algorithms can achieve accuracy to a few tens of
827nanoseconds in scalable server farms without special hardware.</li>
828<li>The <a
829href="https://www.nist.gov/intelligent-systems-division/ieee-1588">Precision
830Time Protocol</a> (<abbr
831title="Institute of Electrical and Electronics Engineers">IEEE</abbr> 1588)
832can achieve submicrosecond clock accuracy on a local area network
833with special-purpose hardware.</li>
834<li><a
835href="https://tools.ietf.org/html/rfc4833">Timezone
836Options for <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr></a>
837(Internet <abbr>RFC</abbr> 4833)
838specifies a <a
839href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol"><abbr>DHCP</abbr></a>
840option for a server to configure
841a client's time zone and daylight saving settings automatically.</li>
842<li><a
843href="https://www.cv.nrao.edu/~rfisher/Ephemerides/times.html">Astronomical
844Times</a> explains more abstruse astronomical time scales like
845<abbr title="Terrestrial Dynamic Time">TDT</abbr>,
846<abbr title="Geocentric Coordinate Time">TCG</abbr>, and
847<abbr title="Barycentric Dynamic Time">TDB</abbr>.
848<a href="https://www.ucolick.org/~sla/leapsecs/timescales.html">Time
849Scales</a> goes into more detail, particularly for historical variants.</li>
850<li>The <a href="https://www.iau.org"><abbr
851title="International Astronomical Union">IAU</abbr></a>'s <a
852href="http://www.iausofa.org"><abbr
853title="Standards Of Fundamental Astronomy">SOFA</abbr></a>
854collection contains C and <a
855href="https://en.wikipedia.org/wiki/Fortran">Fortran</a>
856code for converting among time scales like
857<abbr title="International Atomic Time">TAI</abbr>,
858<abbr>TDB</abbr>, <abbr>TDT</abbr> and
859<abbr>UTC</abbr>.</li>
860<li><a
861href="https://www.giss.nasa.gov/tools/mars24/help/notes.html">Mars24 Sunclock
862&ndash; Time on Mars</a> describes Airy Mean Time (<abbr>AMT</abbr>) and the
863diverse local time
864scales used by each landed mission on Mars.</li>
865<li><a href="http://leapsecond.com">LeapSecond.com</a> is
866dedicated not only to leap seconds but to precise time and frequency
867in general. It covers the state of the art in amateur timekeeping, and
868how the art has progressed over the past few decades.</li>
869<li><a
870href="https://www.iers.org/IERS/EN/Publications/Bulletins/bulletins.html"><abbr
871title="International Earth Rotation and Reference Systems Service">IERS</abbr>
872Bulletins</a> contains official publications of the International
873Earth Rotation and Reference Systems Service, which decides when leap
874seconds occur. The <code>tz</code> code and data support leap seconds
875via an optional "<code>right</code>" configuration, as opposed to the
876default "<code>posix</code>" configuration.</li>
877<li><a href="https://developers.google.com/time/smear">Leap Smear</a>
878discusses how to gradually adjust <abbr>POSIX</abbr> clocks near a
879leap second so that they disagree with <abbr>UTC</abbr> by at most a
880half second, even though every <abbr>POSIX</abbr> minute has exactly
881sixty seconds. This approach works with the default <code>tz</code>
882"<code>posix</code>" configuration, is <a
883href="http://bk1.ntp.org/ntp-stable/README.leapsmear">supported</a> by
884the <abbr>NTP</abbr> reference implementation, and is used by major
885cloud service providers.</li>
886<li>The <a
887href="https://pairlist6.pair.net/mailman/listinfo/leapsecs">Leap
888Second Discussion List</a> covers <a
889href="https://www2.unb.ca/gge/Resources/gpsworld.november99.pdf">McCarthy
890and Klepczynski's 1999 proposal to discontinue leap seconds</a>,
891discussed further in
892<a href="https://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf">The
893leap second: its history and possible future</a>.
894<a href="https://www.ucolick.org/~sla/leapsecs/"><abbr>UTC</abbr>
895might be redefined
896without Leap Seconds</a> gives pointers on this
897contentious issue, which was active until 2015 and could become active
898again.</li>
899</ul>
900<h2 id="notation">Time notation</h2>
901<ul>
902<li>The <a id="CLDR" href="http://cldr.unicode.org">Unicode Common Locale Data
903Repository (<abbr>CLDR</abbr>) Project</a> has localizations for time
904zone names, abbreviations, identifiers, and formats. For example, it
905contains French translations for "Eastern European Summer Time",
906"<abbr title="Eastern European Summer Time">EEST</abbr>", and
907"Bucharest". Its
908<a href="https://unicode.org/cldr/charts/latest/by_type/">by-type
909charts</a> show these values for many locales. Data values are available in
910both <abbr title="Locale Data Markup Language">LDML</abbr>
911(an <abbr>XML</abbr> format) and <abbr>JSON</abbr>.
912<li>
913<a href="https://www.cl.cam.ac.uk/~mgk25/iso-time.html">A summary of
914the international standard date and time notation</a> is a good
915summary of
916<a
917href="https://www.iso.org/standard/40874.html"><em><abbr>ISO</abbr>
9188601:2004 &ndash; Data elements and interchange formats &ndash; Information
919interchange &ndash; Representation of dates and times</em></a>.</li>
920<li>
921<a href="https://www.w3.org/TR/xmlschema-2/#dateTime"><abbr>XML</abbr>
922Schema: Datatypes &ndash; dateTime</a> specifies a format inspired by
923<abbr>ISO</abbr> 8601 that is in common use in <abbr>XML</abbr> data.</li>
924<li><a href="https://tools.ietf.org/html/rfc5322#section-3.3">&sect;3.3 of
925Internet Message Format</a> (Internet <abbr>RFC</abbr> 5322)
926specifies the time notation used in email and <a
927href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"><abbr>HTTP</abbr></a>
928headers.</li>
929<li>
930<a href="https://tools.ietf.org/html/rfc3339">Date and Time
931on the Internet: Timestamps</a> (Internet <abbr>RFC</abbr> 3339)
932specifies an <abbr>ISO</abbr> 8601
933profile for use in new Internet
934protocols.</li>
935<li>
936<a href="https://www.hackcraft.net/web/datetime/">Date &amp; Time
937Formats on the Web</a> surveys web- and Internet-oriented date and time
938formats.</li>
939<li>Alphabetic time zone abbreviations should not be used as unique
940identifiers for <abbr>UT</abbr> offsets as they are ambiguous in
941practice. For example, in English-speaking North America
942"<abbr>CST</abbr>" denotes 6 hours behind <abbr>UT</abbr>,
943but in China it denotes 8 hours ahead of <abbr>UT</abbr>,
944and French-speaking North Americans prefer
945"<abbr title="Heure Normale du Centre">HNC</abbr>" to
946"<abbr>CST</abbr>". The <code><abbr>tz</abbr></code>
947database contains English abbreviations for many timestamps;
948unfortunately some of these abbreviations were merely the database maintainers'
949inventions, and these have been removed when possible.</li>
950<li>Numeric time zone abbreviations typically count hours east of
951<abbr>UT</abbr>, e.g., +09 for Japan and
952&minus;10 for Hawaii. However, the <abbr>POSIX</abbr>
953<code><abbr>TZ</abbr></code> environment variable uses the opposite convention.
954For example, one might use <code><abbr>TZ</abbr>="<abbr
955title="Japan Standard Time">JST</abbr>-9"</code> and
956<code><abbr>TZ</abbr>="<abbr title="Hawaii Standard Time">HST</abbr>10"</code>
957for Japan and Hawaii, respectively. If the
958<code><abbr>tz</abbr></code> database is available, it is usually better to use
959settings like <code><abbr>TZ</abbr>="Asia/Tokyo"</code> and
960<code><abbr>TZ</abbr>="Pacific/Honolulu"</code> instead, as this should avoid
961confusion, handle old timestamps better, and insulate you better from
962any future changes to the rules. One should never set
963<abbr>POSIX</abbr> <code><abbr>TZ</abbr></code> to a value like
964<code>"GMT-9"</code>, though, since this would incorrectly imply that
965local time is nine hours ahead of <abbr>UT</abbr> and the time zone
966is called "<abbr>GMT</abbr>".</li>
967</ul>
968<h2 id="see-also">See also</h2>
969<ul>
970<li><a href="theory.html">Theory and pragmatics of the tz code and data</a></li>
971<li><a href="tz-art.html">Time and the Arts</a></li>
972</ul>
973<hr>
974<address>
975This web page is in the public domain, so clarified as of
9762009-05-17 by Arthur David Olson.
977<br>
978Please send corrections to this web page to the
979<a href="mailto:tz@iana.org">time zone mailing list</a>.
980</address>
981</body>
982</html>
983