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