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