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