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