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