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