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