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