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