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