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