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