tz-link.html revision 1.20
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/">ChromiumOS</a>, 85<a href="https://cygwin.com">Cygwin</a>, 86<a href="https://mariadb.org">MariaDB</a>, 87<a href="https://musl.libc.org">musl libc</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>, 100<a href="https://www.oracle.com/solaris">Oracle Solaris</a>, 101and <a href="https://blackberry.qnx.com/en">QNX</a>.</p> 102<p> 103Each main entry in the database represents a <dfn>timezone</dfn> 104for a set of civil-time clocks that have all agreed since 1970. 105Timezones are typically identified by continent or ocean and then by the 106name of the largest city within the region containing the clocks. 107For example, <code>America/New_York</code> 108represents most of the <abbr title="United States">US</abbr> eastern time zone; 109<code>America/Phoenix</code> represents most of Arizona, which 110uses mountain time without daylight saving time (<abbr>DST</abbr>); 111<code>America/Detroit</code> represents most of Michigan, which uses 112eastern time but with different <abbr>DST</abbr> rules in 1975; 113and other entries represent smaller regions like Starke County, 114Indiana, which switched from central to eastern time in 1991 115and switched back in 2006. 116To use the database on a <a 117href="https://en.wikipedia.org/wiki/POSIX"><abbr 118title="Portable Operating System Interface">POSIX</abbr>.1-2024</a> 119implementation set the <code><abbr>TZ</abbr></code> 120environment variable to the location’s full name, 121e.g., <code><abbr>TZ</abbr>="America/New_York"</code>.</p> 122<p> 123Associated with each timezone is a history of offsets from 124<a href="https://en.wikipedia.org/wiki/Universal_Time">Universal 125Time</a> (<abbr>UT</abbr>), which is <a 126href="https://en.wikipedia.org/wiki/Greenwich_Mean_Time">Greenwich Mean 127Time</a> (<abbr>GMT</abbr>) with days beginning at midnight; 128for timestamps after 1960 this is more precisely <a 129href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time">Coordinated 130Universal Time</a> (<abbr>UTC</abbr>). 131The database also records when daylight saving time was in use, 132along with some time zone abbreviations such as <abbr>EST</abbr> 133for Eastern Standard Time in the <abbr>US</abbr>.</p> 134</section> 135 136<section> 137<h2 id="download">Downloading the <code><abbr>tz</abbr></code> database</h2> 138<p> 139The following <a 140href="https://en.wikipedia.org/wiki/Unix_shell">shell</a> commands download 141the latest release’s two 142<a href="https://en.wikipedia.org/wiki/Tar_(computing)">tarballs</a> 143to a <abbr>GNU</abbr>/Linux or similar host.</p> 144<pre><code>mkdir tzdb 145cd tzdb 146<a href="https://www.gnu.org/software/wget/">wget</a> https://www.iana.org/time-zones/repository/tzcode-latest.tar.gz 147wget https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz 148<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 - 149gzip -dc tzdata-latest.tar.gz | tar -xf - 150</code></pre> 151<p>Alternatively, the following shell commands download the same 152release in a single-tarball format containing extra data 153useful for regression testing:</p> 154<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> 155<a href="https://www.nongnu.org/lzip/">lzip</a> -dc tzdb-latest.tar.lz | tar -xf - 156</code></pre> 157<p>These commands use convenience links to the latest release 158of the <code><abbr>tz</abbr></code> database hosted by the 159<a href="https://www.iana.org/time-zones">Time Zone Database website</a> 160of the <a href="https://www.iana.org">Internet Assigned Numbers 161Authority (IANA)</a>. 162Older releases are in files named 163<code>tzcode<var>V</var>.tar.gz</code>, 164<code>tzdata<var>V</var>.tar.gz</code>, and 165<code>tzdb-<var>V</var>.tar.lz</code>, 166where <code><var>V</var></code> is the version. 167Since 1996, each version has been a four-digit year followed by 168lower-case letter (<samp>a</samp> through <samp>z</samp>, 169then <samp>za</samp> through <samp>zz</samp>, then <samp>zza</samp> 170through <samp>zzz</samp>, and so on). 171Since version 2022a, each release has been distributed in 172<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/pax.html#tag_20_94_13_06">POSIX 173ustar interchange format</a>, compressed as described above; 174older releases use a nearly compatible format. 175Since version 2016h, each release has contained a text file named 176“<code>version</code>” whose first (and currently only) line is the version. 177<a href="https://ftp.iana.org/tz/releases/">Older archived releases are 178available</a> via 179<a href="https://en.wikipedia.org/wiki/HTTPS"><abbr 180title="Hypertext Transfer Protocol Secure">HTTPS</abbr></a>, 181<a href="https://en.wikipedia.org/wiki/Rsync"><abbr 182title="remote sync">rsync</abbr></a>, and 183<a href="https://en.wikipedia.org/wiki/FTP"><abbr 184title="File Transfer Protocol">FTP</abbr></a>. 185<p>Alternatively, a development repository of code and data can bem 186retrieved from <a href="https://github.com">GitHub</a> via the shell 187command:</p> 188<pre><code><a href="https://git-scm.com">git</a> clone <a href="https://github.com/eggert/tz">https://github.com/eggert/tz</a> 189</code></pre> 190<p> 191Since version 2012e, each release has been tagged in development repositories. 192Untagged commits are less well tested and probably contain 193more errors.</p> 194<p> 195After obtaining the code and data files, see the 196<code>README</code> file for what to do next. 197The code lets you compile the <code><abbr>tz</abbr></code> source files into 198machine-readable binary files, one for each location. The binary files 199are in a special format specified by 200<a href="https://www.rfc-editor.org/rfc/rfc9636">The 201Time Zone Information Format (<abbr>TZif</abbr>)</a> 202(Internet <abbr title="Request For Comments">RFC</abbr> 9636). 203The code also lets 204you read a <abbr>TZif</abbr> file and interpret timestamps for that 205location.</p> 206</section> 207 208<section> 209<h2 id="changes">Changes to the <code><abbr>tz</abbr></code> database</h2> 210<p> 211The <code><abbr>tz</abbr></code> code and data 212are by no means authoritative. If you find errors, please 213email changes to <a href="mailto:tz@iana.org"><code>tz@iana.org</code></a>, 214the time zone mailing list. 215The mailing list and its archives are public, 216so please do not send confidential information. 217See 218<a href="https://lists.iana.org/postorius/lists/tz.iana.org/">the mailing 219list’s main page</a> to subscribe or to browse its archive of old messages. 220<a href="https://tzdata-meta.timtimeonline.com">Metadata for mailing list 221discussions</a> and corresponding data changes can be 222generated <a href="https://github.com/timparenti/tzdata-meta">automatically</a>. 223</p> 224<p> 225Changes to the <code><abbr>tz</abbr></code> code and data are often 226propagated to clients via operating system updates, so 227client <code><abbr>tz</abbr></code> data can often be corrected by 228applying these updates. With GNU/Linux and similar systems, if your 229maintenance provider has not yet adopted the 230latest <code><abbr>tz</abbr></code> data, you can often short-circuit 231the process by tailoring the generic instructions in 232the <code><abbr>tz</abbr> README</code> file and installing the latest 233data yourself. System-specific instructions for installing the 234latest <code><abbr>tz</abbr></code> data have also been published 235for <a href="https://www.ibm.com/support/pages/aix-time-zone-olson-tzdata-updates"><abbr>AIX</abbr></a>, 236<a 237href="https://source.android.com/devices/tech/config/timezone-rules">Android</a>, 238<a 239href="https://unicode-org.github.io/icu/userguide/datetime/timezone/"><abbr 240title="International Components for Unicode">ICU</abbr></a>, 241<a href="https://www.ibm.com/support/pages/java-sdk-time-zone-update-utility"><abbr>IBM</abbr> 242JDK</a>, 243<a href="https://www.joda.org/joda-time/tz_update.html">Joda-Time</a>, <a 244href="https://dev.mysql.com/doc/refman/en/time-zone-support.html">MySQL</a>, 245<a href="https://nodatime.org/userguide/tzdb">Noda Time</a>, and <a 246href="https://www.oracle.com/java/technologies/javase/tzupdater-readme.html">OpenJDK/Oracle JDK</a>. 247</p> 248<p>Since version 2013a, 249sources for the <code><abbr>tz</abbr></code> database have been 250<a href="https://en.wikipedia.org/wiki/UTF-8"><abbr 251title="Unicode Transformation Format 8-bit">UTF-8</abbr></a> 252<a href="https://en.wikipedia.org/wiki/Text_file">text files</a> 253with lines terminated by <a href="https://en.wikipedia.org/wiki/Newline"><abbr 254title="linefeed">LF</abbr></a>, 255which can be modified by common text editors such 256as <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>, 257<a href="https://gedit-text-editor.org">gedit</a>, and 258<a href="https://www.vim.org">vim</a>. 259Specialized source-file editing can be done via the 260<a href="https://packagecontrol.io/packages/zoneinfo">Sublime 261zoneinfo</a> package for <a 262href="https://www.sublimetext.com">Sublime Text</a> and the <a 263href="https://marketplace.visualstudio.com/items?itemName=gilmoreorless.vscode-zoneinfo">VSCode 264zoneinfo</a> extension for <a href="https://code.visualstudio.com">Visual 265Studio Code</a>. 266</p> 267<p> 268For further information about updates, please see 269<a href="https://www.rfc-editor.org/rfc/rfc6557">Procedures for 270Maintaining the Time Zone Database</a> (Internet <abbr>RFC</abbr> 6557). 271More detail can be 272found in <a href="theory.html">Theory and pragmatics of the 273<code><abbr>tz</abbr></code> code and data</a>. 274<a href="https://a0.github.io/a0-tzmigration/">A0 TimeZone Migration</a> 275displays changes between recent <code><abbr>tzdb</abbr></code> versions. 276</p> 277</section> 278 279<section> 280<h2 id="coordinating">Coordinating with governments and distributors</h2> 281<p> 282As discussed in 283“<a href="https://www.icann.org/en/blogs/details/how-time-zones-are-coordinated-13-03-2023-en">How 284Time Zones Are Coordinated</a>”, the time zone database relies on 285collaboration among governments, the time zone database volunteer 286community, and data distributors downstream. 287<p> 288If your government plans to change its time zone boundaries or 289daylight saving rules, please send email as described in 290"<a href="#changes">Changes to the <code><abbr>tz</abbr></code> database</a>". 291Do this well in advance, 292as this will lessen confusion and will coordinate updates to many cell phones, 293computers, and other devices around the world. 294In your email, please cite the legislation or regulation that specifies 295the change, so that it can be checked for details such as the exact times 296when clock transitions occur. 297It is OK if a rule change is planned to affect clocks 298far into the future, as a long-planned change can easily be reverted 299or otherwise altered with a year’s notice before the change would have 300affected clocks.</p> 301<p> 302There is no fixed schedule for <code><abbr>tzdb</abbr></code> releases. 303However, typically a release occurs every few months. 304Many downstream timezone data distributors wait for 305a <code><abbr>tzdb</abbr></code> release before they produce an update 306to time zone behavior in consumer devices and software products. 307After a release, various parties must integrate, test, 308and roll out an update before <a 309href="https://en.wikipedia.org/wiki/End_user">end users</a> see changes. 310These updates can be expensive, for both the <a 311href="https://en.wikipedia.org/wiki/Quality_assurance">quality 312assurance</a> process and the overall cost of shipping and installing 313updates to each device’s copy of <code><abbr>tzdb</abbr></code>. 314Updates may be batched with other updates and may take substantial 315time to reach end users after a release. 316Older devices may no longer be supported and thus may never be updated, 317which means they will continue to use out-of-date rules.</p> 318<p> 319For these reasons any rule change should be promulgated at least a 320year before it affects how clocks operate; otherwise, there is a good 321chance that many clocks will be wrong due to delays in propagating updates, 322and that residents will be confused or even actively resist the change. 323The shorter the notice, the more likely clock problems will arise; see “<a 324href="https://codeofmatt.com/2016/04/23/on-the-timing-of-time-zone-changes/">On 325the Timing of Time Zone Changes</a>” for examples. 326</p> 327</section> 328 329<section> 330<h2 id="commentary">Commentary on the <code><abbr>tz</abbr></code> database</h2> 331<ul> 332<li>The article 333<a href="https://en.wikipedia.org/wiki/Tz_database">tz database</a> is 334an encyclopedic summary.</li> 335<li><a href="tz-how-to.html">How to Read the 336tz Database Source Files</a> explains the <code><abbr>tz</abbr></code> 337database format.</li> 338<li><a 339href="https://blog.jonudell.net/2009/10/23/a-literary-appreciation-of-the-olsonzoneinfotz-database/">A 340literary appreciation of the Olson/Zoneinfo/tz database</a> comments on the 341database’s style.</li> 342<li><a href="https://doi.org/10.1145/3340301.3341125">What time is it: 343managing time in the internet</a> analyzes the database longitudinally.</li> 344</ul> 345</section> 346 347<section> 348<h2 id="web">Web sites using recent versions of the 349<code><abbr>tz</abbr></code> database</h2> 350<p> 351These are listed roughly in ascending order of complexity and fanciness. 352</p> 353<ul> 354<li><a href="https://time.is">Time.is</a> shows locations’ 355time and zones.</li> 356<li><a href="https://www.timejones.com">TimeJones.com</a>, 357<a href="https://timezoneconverterapp.com">Time Zone Converter</a> and 358<a href="https://www.worldclock.com">The World Clock</a> 359are time zone converters.</li> 360<li><a href="https://timezonedb.com/download">TimeZoneDB Database</a> 361publishes <code><abbr>tzdb</abbr></code>-derived data in 362<a href="https://en.wikipedia.org/wiki/Comma-separated_values"><abbr 363title="comma-separated values">CSV</abbr></a> and 364in <a href="https://en.wikipedia.org/wiki/SQL"><abbr 365title="Structured Query Language">SQL</abbr></a> form.</li> 366<li><a 367href="https://twiki.org/cgi-bin/xtra/tzdatepick.html">Date and Time Gateway</a> 368lets you see the <code><abbr>TZ</abbr></code> values directly.</li> 369<li><a 370href="https://www.convertit.com/Go/ConvertIt/World_Time/Current_Time.ASP">Current 371Time in 1000 Places</a> uses descriptions of the values.</li> 372<li><a href="https://www.timeanddate.com/worldclock/">The World Clock – 373Worldwide</a> lets you sort zone names and convert times.</li> 374<li><a href="https://24timezones.com">24TimeZones</a> has a world 375time map and a time converter.</li> 376<li><a href="https://www.zeitverschiebung.net/en/">Time Difference</a> 377calculates the current time difference between locations.</li> 378<li><a href="https://www.wx-now.com">Weather Now</a> and 379<a href="https://www.thetimenow.com">The Time Now</a> list the weather too.</li> 380</ul> 381</section> 382 383<section> 384<h2 id="protocols">Network protocols for <code><abbr>tz</abbr></code> data</h2> 385<ul> 386<li><a href="https://www.rfc-editor.org/rfc/rfc7808">Time Zone 387Data Distribution Service</a> (TZDIST, Internet <abbr>RFC</abbr> 7808) 388is associated with 389<a href="https://www.rfc-editor.org/rfc/rfc7809">CalDAV</a> 390(Internet <abbr>RFC</abbr> 7809), a calendar access protocol for 391transferring time zone data by reference. 392<a href="https://devguide.calconnect.org/Time-Zones/TZDS/">TZDIST 393implementations</a> are available.</li> 394<li>The <a href="https://www.rfc-editor.org/rfc/rfc5545">iCalendar format</a> 395(Internet <abbr>RFC</abbr> 5445) 396covers time zone 397data; see its VTIMEZONE calendar component. 398The iCalendar format requires specialized parsers and generators; a 399variant <a href="https://www.rfc-editor.org/rfc/rfc6321">xCal</a> 400(Internet <abbr>RFC</abbr> 6321) uses 401<a href="https://www.w3.org/XML/"><abbr 402title="Extensible Markup Language">XML</abbr></a> format, and a variant 403<a href="https://www.rfc-editor.org/rfc/rfc7265">jCal</a> 404(Internet <abbr>RFC</abbr> 7265) 405uses <a href="https://www.json.org/json-en.html"><abbr 406title="JavaScript Object Notation">JSON</abbr></a> format.</li> 407</ul> 408</section> 409 410<section> 411<h2 id="compilers">Other <code><abbr>tz</abbr></code> compilers</h2> 412<p>Although some of these do not fully support 413<code><abbr>tz</abbr></code> data, in recent <code><abbr>tzdb</abbr></code> 414distributions you can generally work around compatibility problems by 415running the command <code>make rearguard_tarballs</code> and compiling 416from the resulting tarballs instead.</p> 417<ul> 418<li><a href="https://github.com/libical/vzic">Vzic</a> is a <a 419href="https://en.wikipedia.org/wiki/C_(programming_language)">C</a> 420program that compiles 421<code><abbr>tz</abbr></code> source into iCalendar-compatible VTIMEZONE files. 422Vzic is freely 423available under the <a 424href="https://www.gnu.org/copyleft/gpl.html"><abbr>GNU</abbr> 425General Public License (<abbr 426title="General Public License">GPL</abbr>)</a>.</li> 427<li><a 428href="https://metacpan.org/release/DateTime-TimeZone">DateTime::TimeZone</a> 429contains a script <code>parse_olson</code> that compiles 430<code><abbr>tz</abbr></code> source into <a href="https://www.perl.org">Perl</a> 431modules. It is part of the Perl <a 432href="https://github.com/houseabsolute/DateTime.pm/wiki">DateTime Project</a>, 433which is freely 434available under both the <abbr>GPL</abbr> and the Perl Artistic 435License. DateTime::TimeZone also contains a script 436<code>tests_from_zdump</code> that generates test cases for each clock 437transition in the <code><abbr>tz</abbr></code> database.</li> 438<li>The <a href="https://howardhinnant.github.io/date/tz.html">Time Zone 439Database Parser</a> is a 440<a href="https://en.wikipedia.org/wiki/C++">C++</a> parser and 441runtime library with a <a 442href="https://en.cppreference.com/w/cpp/chrono"><code>std::chrono</code> API</a> 443that is a standard part of C++. 444It is freely available under the 445<abbr title="Massachusetts Institute of Technology">MIT</abbr> license.</li> 446<li><a id="ICU" href="https://icu.unicode.org">International Components for 447Unicode (<abbr>ICU</abbr>)</a> contains C/C++ and <a 448href="https://en.wikipedia.org/wiki/Java_(programming_language)">Java</a> 449libraries for internationalization that 450has a compiler from <code><abbr>tz</abbr></code> source 451and from <abbr title="Common Locale Data Repository">CLDR</abbr> data 452(mentioned <a href="#CLDR">below</a>) 453into an <abbr>ICU</abbr>-specific format. 454<abbr>ICU</abbr> is freely available under a 455<abbr>BSD</abbr>-style license.</li> 456<li>The <a href="https://github.com/lau/tzdata">Tzdata</a> package for 457the <a href="https://elixir-lang.org">Elixir</a> language downloads 458and compiles <code><abbr>tz</abbr></code> source and exposes <abbr 459title="Application Program Interface">API</abbr>s for use. It is 460freely available under the <abbr>MIT</abbr> license.</li> 461<li>Java-based compilers and libraries include: 462<ul> 463<li>The <a 464href="https://www.oracle.com/java/technologies/javase/tzupdater-readme.html">TZUpdater 465tool</a> compiles <code><abbr>tz</abbr></code> source into the format used by 466<a href="https://openjdk.org">OpenJDK</a> and 467<a href="https://jdk.java.net">Oracle JDK</a>. 468Although its source code is proprietary, its executable is available under the 469<a href="https://www.oracle.com/a/tech/docs/tzupdater-lic.html">Java SE 470Timezone Updater License Agreement</a>.</li> 471<li>The <a 472href="https://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html">Java 473SE 8 Date and Time</a> <abbr>API</abbr> can be supplemented by <a 474href="https://www.threeten.org/threeten-extra/">ThreeTen-Extra</a>, 475which is freely available under a <abbr>BSD</abbr>-style license.</li> 476<li><a href="https://www.joda.org/joda-time/">Joda-Time – Java date 477and time <abbr>API</abbr></a> contains a class 478<code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles 479<code><abbr>tz</abbr></code> source into a binary format. It inspired 480Java 8 <code>java.time</code>, which its users should migrate to once 481they can assume Java 8 or later. It is available under the <a 482href="https://www.apache.org/licenses/LICENSE-2.0">Apache License</a>.</li> 483<li><a href="https://bell-sw.com/pages/iana-updater/">IANA Updater</a> and <a 484href="https://www.azul.com/products/open-source-tools/ziupdater-time-zone-tool/">ZIUpdater</a> 485are alternatives to TZUpdater. IANA Updater’s license is unclear; 486ZIUpdater is licensed under the <abbr>GPL</abbr>.</li> 487<li><a href="https://github.com/MenoData/Time4A">Time4A: Advanced date and 488time library for Android</a> and 489<a href="https://github.com/MenoData/Time4J">Time4J: Advanced date, 490time and interval library for Java</a> compile 491<code><abbr>tz</abbr></code> source into a binary format. 492Time4A is available under the Apache License and Time4J is 493available under the <a 494href="https://www.gnu.org/copyleft/lesser.html"><abbr>GNU</abbr> Lesser 495General Public License (<abbr title="Lesser General Public 496License">LGPL</abbr>)</a>.</li> 497<li><abbr>ICU</abbr> (mentioned <a href="#ICU">above</a>) contains compilers and 498Java-based libraries.</li> 499</ul> 500<li><a href="https://nodatime.org">Noda Time – Date and 501time <abbr>API</abbr> for .NET</a> 502is like Joda-Time and Time4J, but for the .NET framework instead of Java. 503It is freely available under the Apache License.</li> 504<li>Many modern 505<a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> 506runtimes support <code><abbr>tz</abbr></code> natively via the 507<code>timeZone</code> option of <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat"><code>Intl.DateTimeFormat</code></a>. 508This can be used as-is or with most of the following libraries, 509many of which also support runtimes lacking the <code>timeZone</code> option. 510<ul> 511<li>The <a 512href="https://github.com/formatjs/date-time-format-timezone"><code>Intl.DateTimeFormat</code> 513timezone polyfill</a> 514is freely available under a <abbr>BSD</abbr>-style license.</li> 515<li>The <a href="https://date-fns.org">date-fns</a> 516library manipulates timezone-aware timestamps in browsers and 517in <a href="https://nodejs.org/en/">Node.js</a>. 518It is freely available under the <abbr>MIT</abbr> license.</li> 519<li><a href="https://github.com/iamkun/dayjs">Day.js</a> is a 520minimalist replacement for the date and time API of 521the <a href="https://momentjs.com/docs/">now-legacy Moment.js</a> date 522manipulation library. 523It is freely available under the <abbr>MIT</abbr> license.</li> 524<li><a href="https://moment.github.io/luxon/">Luxon</a> improves 525timezone support for the <code>Intl</code> API. 526It is freely available under the <abbr>MIT</abbr> license.</li> 527<li><a href="https://momentjs.com/timezone/">Moment Timezone</a> is a 528Moment.js plugin. 529It is freely available under the <abbr>MIT</abbr> license.</li> 530<li><a href="https://github.com/bigeasy/timezone">Timezone</a> is a 531JavaScript library that supports date arithmetic that is time zone 532aware. It is freely available under the <abbr>MIT</abbr> license.</li> 533<li><a href="https://www.npmjs.com/package/@tubular/time">@tubular/time</a> 534supports live <code><abbr>tzdb</abbr></code> updates, 535astronomical and atomic time, a command-line interface, 536and full <a 537href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>. 538Its companion <a 539href="https://www.npmjs.com/package/@tubular/time-tzdb">@tubular/time-tzdb</a> 540can generate <abbr>TZif</abbr> and other files, and a companion website 541<a href="https://tzexplorer.org">Timezone Database Explorer</a> lets you 542convert timestamps, view transition histories, and download code and data. 543It is freely available under the <abbr>MIT</abbr> license.</li> 544</ul> 545The proposed <a 546href="https://github.com/tc39/proposal-temporal"><code>Temporal</code> 547objects</a> let programs access an abstract view of 548<code><abbr>tzdb</abbr></code> data, and are designed to replace <a 549href="https://codeofmatt.com/javascript-date-type-is-horribly-broken/">JavaScript’s 550problematic <code>Date</code> objects</a> when working with dates and times. 551<li><a href="https://github.com/JuliaTime">JuliaTime</a> contains a 552compiler from <code><abbr>tz</abbr></code> source into 553<a href="https://julialang.org">Julia</a>. It is freely available 554under the <abbr>MIT</abbr> license.</li> 555<li><a href="https://github.com/pavkam/tzdb"><abbr>TZDB</abbr> – 556<abbr>IANA</abbr> Time Zone Database for Delphi/<abbr 557title="Free Pascal Compiler">FPC</abbr></a> 558compiles from <code><abbr>tz</abbr></code> source into 559<a href="https://en.wikipedia.org/wiki/Object_Pascal">Object Pascal</a> 560as compiled by <a href="https://en.wikipedia.org/wiki/Delphi_(IDE)">Delphi</a> 561and <a 562href="https://en.wikipedia.org/wiki/Free_Pascal"><abbr>FPC</abbr></a>. 563It is freely available under a <abbr>BSD</abbr>-style license.</li> 564<li><a href="https://pythonhosted.org/pytz/">pytz – World Timezone 565Definitions for Python</a> compiles <code><abbr>tz</abbr></code> source into 566<a href="https://www.python.org">Python</a>. 567It is freely available under a <abbr>BSD</abbr>-style license. 568In code that can assume Python 3.6 or later it is largely superseded; see <a 569href="https://blog.ganssle.io/articles/2018/03/pytz-fastest-footgun.html">pytz: 570The Fastest Footgun in the West</a>.</li> 571<li><a href="https://tzinfo.github.io">TZInfo – 572Ruby Timezone Library</a> 573compiles <code><abbr>tz</abbr></code> source into 574<a href="https://www.ruby-lang.org/en/">Ruby</a>. 575It is freely available under the <abbr>MIT</abbr> license.</li> 576<li>The <a href="https://www.squeaksource.com/Chronos/">Chronos Date/Time 577Library</a> is 578a <a href="https://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a> class 579library that compiles <code><abbr>tz</abbr></code> source into a time 580zone repository whose format 581is either proprietary or an <abbr>XML</abbr>-encoded 582representation.</li> 583<li><a id="Tcl" href="https://tcl.tk">Tcl</a> 584contains a developer-oriented parser that compiles <code><abbr>tz</abbr></code> 585source into text files, along with a runtime that can read those 586files. Tcl is freely available under a <abbr>BSD</abbr>-style 587license.</li> 588</ul> 589</section> 590 591<section> 592<h2 id="TZif">Other <abbr>TZif</abbr> readers</h2> 593<ul> 594<li>The <a 595href="https://www.gnu.org/software/libc/"><abbr>GNU</abbr> C 596Library</a> 597has an independent, thread-safe implementation of 598a <abbr>TZif</abbr> file reader. 599This library is freely available under the LGPL 600and is widely used in <abbr>GNU</abbr>/Linux systems.</li> 601<li><a href="https://www.gnome.org">GNOME</a>’s 602<a href="https://developer.gnome.org/glib/">GLib</a> has 603a <abbr>TZif</abbr> file reader written in C that 604creates a <code>GTimeZone</code> object representing sets 605of <abbr>UT</abbr> offsets. 606It is freely available under the <abbr>LGPL</abbr>.</li> 607<li>The 608<a href="https://github.com/bloomberg/bde/wiki">BDE Standard Library</a>’s 609<code>baltzo::TimeZoneUtil</code> component contains a C++ 610implementation of a <abbr>TZif</abbr> file reader. It is freely available under 611the Apache License.</li> 612<li><a href="https://github.com/google/cctz">CCTZ</a> is a simple C++ 613library that translates between <abbr>UT</abbr> and civil time and 614can read <abbr>TZif</abbr> files. It is freely available under the Apache 615License.</li> 616<li>The <a href="https://golang.org">Go programming language</a> 617has a <abbr>TZif</abbr> file reader <a 618href="https://pkg.go.dev/time#LoadLocationFromTZData"><code>LoadLocationFromTZData</code></a>.</li> 619<li>The 620<a href="https://github.com/nayarsystems/posix_tz_db"><code>posix_tz_db</code> 621package</a> contains Python code 622to generate <abbr>CSV</abbr> and <abbr>JSON</abbr> tables that map 623<code><abbr>tz</abbr></code> settings to proleptic TZ approximations. 624For example, it maps <code>"Africa/Cairo"</code> 625to <code>"EET-2EEST,M4.5.5/0,M10.5.4/24"</code>, 626an approximation valid for Cairo timestamps from 2023 on. 627This can help porting to platforms that support only proleptic TZ. 628The package is freely available under the MIT license.</li> 629<li><a href="https://github.com/derickr/timelib">Timelib</a> is a C 630library that reads <abbr>TZif</abbr> files and converts 631timestamps from one time zone or format to another. 632It is used by <a href="https://secure.php.net"><abbr 633title="PHP: Hypertext Preprocessor">PHP</abbr></a>, 634<a href="https://hhvm.com"><abbr title="HipHop Virtual Machine">HHVM</abbr></a>, 635and <a href="https://www.mongodb.com">MongoDB</a>. 636It is freely available under the <abbr>MIT</abbr> license.</li> 637<li>Tcl, mentioned <a href="#Tcl">above</a>, also contains a 638<abbr>TZif</abbr> file reader.</li> 639<li><a href="https://metacpan.org/pod/DateTime::TimeZone::Tzfile"> 640DateTime::TimeZone::Tzfile</a> 641is a <abbr>TZif</abbr> file reader written in Perl. 642It is freely available under the same terms as Perl 643(dual <abbr>GPL</abbr> and Artistic license).</li> 644<li>Python has a <a id="python-zoneinfo" 645href="https://docs.python.org/3/library/zoneinfo.html"><code>zoneinfo.ZoneInfo</code> 646class</a> that reads <abbr>TZif</abbr> data and creates objects 647that represent <code><abbr>tzdb</abbr></code> timezones. 648Python is freely available under the 649<a href="https://docs.python.org/3/license.html">Python Software Foundation 650License</a>. 651A companion <a id="pypi-tzdata" href="https://pypi.org">PyPI</a> module 652<a href="https://pypi.org/project/tzdata/"><code>tzdata</code></a> 653supplies TZif data if the underlying system data cannot be found; 654it is freely available under the Apache License.</li> 655<li>The 656public-domain <a href="https://github.com/dbaron/tz.js">tz.js</a> 657library contains a Python tool that 658converts <abbr>TZif</abbr> data into 659<abbr>JSON</abbr>-format data suitable for use 660in its JavaScript library for time zone conversion. Dates before 1970 661are not supported.</li> 662<li>The <a 663href="https://hackage.haskell.org/package/timezone-olson">timezone-olson</a> 664package contains <a href="https://www.haskell.org">Haskell</a> code that 665parses and uses <abbr>TZif</abbr> data. It is freely 666available under a <abbr>BSD</abbr>-style license.</li> 667</ul> 668</section> 669 670<section> 671<h2 id="software">Other <code><abbr>tz</abbr></code>-based time zone software</h2> 672<ul> 673<li><a href="https://foxclocks.org">FoxClocks</a> 674is an extension for <a href="https://www.google.com/chrome/">Google 675Chrome</a>, <a 676href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a> and <a 677href="https://www.mozilla.org/en-US/thunderbird/">Thunderbird</a>. 678It displays multiple clocks in the application window, and has a mapping 679interface to <a href="https://www.google.com/earth/">Google Earth</a>. 680It is freely available under the <abbr>GPL</abbr>.</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 696→ Tzid 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 <abbr>CIA</abbr>’s 760but the maps are more up to date.</li> 761<li><a 762href="https://blog.poormansmath.net/how-much-is-time-wrong-around-the-world/">How 763much is time wrong around the world?</a> maps the difference between 764mean solar and standard time, highlighting areas such as western China 765where the two differ greatly. It’s a bit out of date, unfortunately.</li> 766</ul> 767</section> 768 769<section> 770<h2 id="boundaries">Time zone boundaries</h2> 771<p>Geographical boundaries between timezones are available 772from several <a 773href="https://en.wikipedia.org/wiki/Internet_geolocation">Internet 774geolocation</a> 775services and other sources.</p> 776<ul> 777<li><a href="https://github.com/evansiroky/timezone-boundary-builder">Timezone 778Boundary Builder</a> extracts 779<a href="https://www.openstreetmap.org">Open Street Map</a> data to build 780boundaries of <code><abbr>tzdb</abbr></code> timezones. 781Its code is freely available under the <abbr>MIT</abbr> license, and 782its data entries are freely available under the 783<a href="https://opendatacommons.org/licenses/odbl/">Open Data Commons 784Open Database License</a>. The borders appear to be quite accurate. 785Its main web page lists more than twenty libraries 786for looking up a timezone name from a GPS coordinate.</li> 787<li>Free access via a network API, if you register a key, is provided by 788the <a 789href="https://www.geonames.org/export/web-services.html#timezone">GeoNames 790Timezone web service</a>, the <a 791href="https://developers.google.com/maps/documentation/timezone/intro">Google 792Maps Time Zone API</a>, and 793the <a href="https://timezonedb.com/api">TimeZoneDB API</a>. 794Commercial network API access is provided 795by <a href="https://askgeo.com">AskGeo</a> 796and <a href="https://www.geogarage.com/blog/news-1/post/geogarage-time-zone-api-31">GeoGarage</a>. 797</li> 798<li>“<a 799href="https://stackoverflow.com/questions/16086962/how-to-get-a-time-zone-from-a-location-using-latitude-and-longitude-coordinates/16086964">How 800to get a time zone from a location using latitude and longitude 801coordinates?</a>” discusses other geolocation possibilities.</li> 802<li><a href="http://statoids.com/statoids.html">Administrative 803Divisions of Countries (“Statoids”)</a> lists 804political subdivision data related to time zones.</li> 805<li><a href="https://manifold.net/info/freestuff.shtml">Manifold Software 806– GIS and Database Tools</a> includes a Manifold-format map of 807world time zone boundaries circa 2007, distributed under the 808<abbr>GPL</abbr>.</li> 809<li>A ship within the <a 810href="https://en.wikipedia.org/wiki/Territorial_waters">territorial 811waters</a> of any nation uses that nation’s time. In international 812waters, time zone boundaries are meridians 15° apart, except that 813<abbr>UT</abbr>−12 and <abbr>UT</abbr>+12 are each 7.5° 814wide and are separated by 815the 180° meridian (not by the International Date Line, which is 816for land and territorial waters only). A captain can change ship’s 817clocks any time after entering a new time zone; midnight changes are 818common.</li> 819</ul> 820</section> 821 822<section> 823<h2 id="civil">Civil time concepts and history</h2> 824<ul> 825<li><a href="https://www.nist.gov/pml/time-and-frequency-division/popular-links/walk-through-time">A 826Walk through Time</a> 827surveys the evolution of timekeeping.</li> 828<li>The history of daylight saving time is surveyed in <a 829href="http://www.webexhibits.org/daylightsaving/">About Daylight 830Saving Time – History, rationale, laws & dates</a> and summarized in 831<a href="http://seizethedaylight.com/dst/">A Brief 832History of Daylight Saving Time</a>.</li> 833<li><a href="https://www.laphamsquarterly.org/roundtable/time-lords">Time 834Lords</a> discusses how authoritarians manipulate civil time.</li> 835<li><a href="https://www.w3.org/TR/timezone/">Working with Time 836and Time Zones</a> 837contains guidelines and best practices for software applications that 838deal with civil time.</li> 839<li><a href="https://webspace.science.uu.nl/~gent0113/idl/idl.htm">A History of 840the International Date Line</a> tells the story of the most important 841time zone boundary.</li> 842<li><a href="http://statoids.com/tconcept.html">Basic Time 843Zone Concepts</a> discusses terminological issues behind time zones.</li> 844</ul> 845</section> 846 847<section> 848<h2 id="national">National histories of legal time</h2> 849<dl> 850<dt>Australia</dt> 851<dd>The Bureau of Meteorology publishes a list of <a 852href="http://www.bom.gov.au/climate/averages/tables/dst_times.shtml">Implementation 853Dates of Daylight Savings Time within Australia</a>.</dd> 854<dt>Belgium</dt> 855<dd>The Royal Observatory of Belgium maintains a table of time in 856Belgium (in 857<a href="https://robinfo.oma.be/nl/astro-info/tijd/" 858hreflang="nl">Dutch</a> and <a 859href="https://robinfo.oma.be/fr/astro-info/heure/" 860hreflang="fr">French</a>).</dd> 861<dt>Brazil</dt> 862<dd>The Time Service Department of the National Observatory 863records <a href="http://pcdsh01.on.br/DecHV.html" 864hreflang="pt-BR">Brazil’s daylight saving time decrees (in 865Portuguese)</a>.</dd> 866<dt>Canada</dt> 867<dd>National Research Council Canada publishes current 868and some older information about <a 869href="https://nrc.canada.ca/en/certifications-evaluations-standards/canadas-official-time/time-zones-daylight-saving-time">time 870zones and daylight saving time</a>.</dd> 871<dt>Chile</dt> 872<dd>The Hydrographic and Oceanographic Service of the Chilean Navy publishes a 873<a href="https://www.horaoficial.cl/historia_hora.php" hreflang="es">history of 874Chile’s official time (in Spanish)</a>.</dd> 875<dt>China</dt> 876<dd>The Hong Kong Observatory maintains a 877<a href="https://www.hko.gov.hk/en/gts/time/Summertime.htm">history of 878 summer time in Hong Kong</a>, 879and Macau’s Meteorological and Geophysical Bureau maintains a <a 880href="https://www.smg.gov.mo/en/subpage/224/page/174">similar 881history for Macau</a>. 882Unfortunately the latter is incomplete and has errors.</dd> 883<dt>Czech Republic</dt> 884<dd><a href="https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas" 885hreflang="cs">When daylight saving time starts and ends (in Czech)</a> 886summarizes and cites historical <abbr>DST</abbr> regulations.</dd> 887<dt>Germany</dt> 888<dd>The National Institute for Science and Technology maintains the <a 889href="https://www.ptb.de/cms/en/fachabteilungen/abt4/fb-44/ag-441/realisation-of-legal-time-in-germany.html">Realisation 890of Legal Time in Germany</a>.</dd> 891<dt>Israel</dt> 892<dd><a 893href="https://tz.cs.huji.ac.il">Israel Timezone Files</a> 894lists official time-change announcements and laws since 1940, 895almost all in Hebrew.</dd> 896<dt>Malaysia</dt> 897<dd>See Singapore <a href="#Singapore">below</a>.</dd> 898<dt>Mexico</dt> 899<dd>The Investigation and Analysis Service of the Mexican Library of 900Congress has published a <a 901href="https://www.diputados.gob.mx/bibliot/publica/inveyana/polisoc/horver/index.htm" 902hreflang="es">history of Mexican local time (in Spanish)</a>.</dd> 903<dt>Netherlands</dt> 904<dd><a href="https://webspace.science.uu.nl/~gent0113/wettijd/wettijd.htm" 905hreflang="nl">Legal time in the Netherlands (in Dutch)</a> 906covers the history of local time in the Netherlands from ancient times.</dd> 907<dt>New Zealand</dt> 908<dd>The Department of Internal Affairs maintains a brief <a 909href="https://www.dia.govt.nz/Daylight-Saving-History">History of 910Daylight Saving</a>.</dd> 911<dt>Palestine</dt> 912<dd>The Ministry of Telecom and Digital Economy publishes a <a 913href="https://mtde.gov.ps/home/TimeZone" 914hreflang="ar">history of clock changes (in Arabic)</a>.</dd> 915<dt>Portugal</dt> 916<dd>The Lisbon Astronomical Observatory publishes a 917<a href="https://oal.ul.pt/hora-legal/" hreflang="pt">history of 918legal time (in Portuguese)</a>.</dd> 919<dt>Singapore</dt> 920<dd><a id="Singapore" 921href="https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html">Why 922is Singapore in the “Wrong” Time Zone?</a> details the 923history of legal time in Singapore and Malaysia.</dd> 924<dt>United Kingdom</dt> 925<dd><a 926href="https://www.polyomino.org.uk/british-time/">History of 927legal time in Britain</a> discusses in detail the country 928with perhaps the best-documented history of clock adjustments.</dd> 929<dt>United States</dt> 930<dd>The Department of Transportation’s <a 931href="https://www.transportation.gov/regulations/recent-time-zone-proceedings">Recent 932Time Zone Proceedings</a> lists changes to 933official written time zone boundaries, and its <a 934href="https://geodata.bts.gov/datasets/usdot::time-zones/about">Time 935Zones dataset</a> maps current boundaries. 936These boundaries are only for standard time, so the current map puts 937all of Arizona in one time zone even though part of Arizona 938observes <abbr>DST</abbr> and part does not.</dd> 939<dt>Uruguay</dt> 940<dd>The Oceanography, Hydrography, and Meteorology Service of the Uruguayan 941Navy (SOHMA) publishes an annual <a 942href="https://sohma.armada.mil.uy/index.php/servicios/datos-astronomicos" hreflang="es">almanac 943(in Spanish)</a>.</dd> 944</dl> 945</section> 946 947<section> 948<h2 id="costs">Costs and benefits of time shifts</h2> 949<p>Various sources argue for and against daylight saving time and time 950zone shifts, and many scientific studies have been conducted. This 951section summarizes reviews and position statements based on 952scientific literature in the area.</p> 953<ul> 954<li>Carey RN, Sarma KM. 955<a href="https://bmjopen.bmj.com/content/7/6/e014319.long">Impact of 956daylight saving time on road traffic collision risk: a systematic 957review</a>. 958<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>. 959This reviews research literature and concludes that the evidence 960neither supports nor refutes road safety benefits from 961shifts in time zones.</li> 962<li>Havranek T, Herman D, Irsova D. 963Does daylight saving save electricity? A meta-analysis. 964<em>Energy J.</em> 2018;39(2):35–61. 965doi:<a href="https://doi.org/10.5547/01956574.39.2.thav">10.5547/01956574.39.2.thav</a>. 966This analyzes research literature and concludes, “Electricity savings 967are larger for countries farther away from the equator, while 968subtropical regions consume more electricity because of <abbr>DST</abbr>.”</li> 969<li>Neumann P, von Blanckenburg K. <a 970href="https://journals.sagepub.com/doi/full/10.1177/0961463X241310562">What 971time will it be? A comprehensive literature review on daylight saving time</a>. 972<em>Time Soc</em>. 2025-01-21. 973doi:<a href="https://doi.org/10.1177/0961463X241310562">10.1177/0961463X241310562</a>. 974This reviews DST’s effects on electricity, health, crime, road safety, 975and the economy, focusing on research since 2010, and concludes that 976year-round standard time is preferable overall. 977</ul> 978 979<p>The following medical societies have taken positions on the 980advisability of clock shifts:</p> 981 982<ul> 983<li>In 2022 the American Medical Association issued a 984<a href="https://www.ama-assn.org/press-center/press-releases/ama-calls-permanent-standard-time">statement 985supporting permanent standard time</a> on health grounds.</li> 986<li>Crawford MR, Winnebeck EC, von Schantz M <em>et al</em>. 987<a href="https://onlinelibrary.wiley.com/doi/10.1111/jsr.14352">The 988British Sleep Society position statement on Daylight Saving Time in the UK</a>. 989<em>J Sleep Res.</em> 2025;34(3):e14352. 990doi:<a href="https://doi.org/10.1111/jsr.14352">10.1111/jsr.14352</a>. 991This recommends that the UK abolish DST for health reasons.</li> 992<li>Malow BA. <a 993href="https://academic.oup.com/sleep/article/45/12/zsac236/6717940">It is time 994to abolish the clock change and adopt permanent 995standard time in the United States: 996a Sleep Research Society position statement</a>. 997<em>Sleep.</em> 2022;45(12):zsac236. 998doi:<a href="https://doi.org/10.1093/sleep/zsac236">10.1093/sleep/zsac236</a>. 999After reviewing the scientific literature, the Sleep Research Society 1000advocates permanent standard time due to its health benefits.</li> 1001<li>Rishi MA, Cheng JY, Strang AR <em>et al</em>. 1002<a href="https://jcsm.aasm.org/doi/10.5664/jcsm.10898">Permanent standard time 1003is the optimal choice for health and safety: 1004an American Academy of Sleep Medicine position statement</a>. 1005<em>J Clin Sleep Med.</em> 2024;20(1):121–125. 1006doi:<a href="https://doi.org/10.5664/jcsm.10898">10.5664/jcsm.10898</a>. 1007The AASM argues for permanent standard time due to health and safety risks 1008and economic costs of both <abbr>DST</abbr> transitions and 1009permanent <abbr>DST</abbr>.</li> 1010<li>Roenneberg T, Wirz-Justice A, Skene DJ <em>et al</em>. 1011<a href="https://journals.sagepub.com/doi/10.1177/0748730419854197">Why 1012should we abolish Daylight Saving Time?</a> 1013<em>J Biol Rhythms.</em> 2019;34(3):227–230. 1014doi:<a href="https://doi.org/10.1177/0748730419854197">10.1177/0748730419854197</a>. 1015The Society for Research on Biological Rhythms 1016opposes <abbr>DST</abbr> changes and permanent <abbr>DST</abbr>, 1017and advocates that governments adopt 1018“permanent Standard Time for the health and safety of their citizens”.</li> 1019</ul> 1020</section> 1021 1022<section> 1023<h2 id="precision">Precision timekeeping</h2> 1024<ul> 1025<li><a 1026href="http://leapsecond.com/hpan/an1289.pdf">The 1027Science of Timekeeping</a> is a thorough introduction 1028to the theory and practice of precision timekeeping.</li> 1029<li><a href="https://doi.org/10.1007/978-3-319-59909-0">The Science of 1030Time 2016</a> contains several freely readable papers.</li> 1031<li><a href="https://www.ntp.org"><abbr 1032title="Network Time Protocol">NTP</abbr>: The Network 1033Time Protocol</a> (Internet <abbr>RFC</abbr> 5905) 1034discusses how to synchronize clocks of 1035Internet hosts.</li> 1036<li>The <a href="https://www.usenix.org/system/files/conference/nsdi18/nsdi18-geng.pdf"><span style="font-variant: small-caps">Huygens</span></a> 1037family of software algorithms can achieve accuracy to a few tens of 1038nanoseconds in scalable server farms without special hardware.</li> 1039<li>The <a 1040href="https://www.nist.gov/intelligent-systems-division/ieee-1588">Precision 1041Time Protocol</a> (<abbr 1042title="Institute of Electrical and Electronics Engineers">IEEE</abbr> 1588) 1043can achieve submicrosecond clock accuracy on a local area network 1044with special-purpose hardware.</li> 1045<li><a 1046href="https://www.rfc-editor.org/rfc/rfc4833">Timezone 1047Options for <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr></a> 1048(Internet <abbr>RFC</abbr> 4833) 1049specifies a <a 1050href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol"><abbr>DHCP</abbr></a> 1051option for a server to configure 1052a client’s time zone and daylight saving settings automatically.</li> 1053<li><a href="https://www.ucolick.org/~sla/leapsecs/timescales.html">Time 1054Scales</a> describes astronomical time scales like 1055<abbr title="Terrestrial Dynamic Time">TDT</abbr>, 1056<abbr title="Geocentric Coordinate Time">TCG</abbr>, and 1057<abbr title="Barycentric Dynamic Time">TDB</abbr>. 1058<li>The <a href="https://www.iau.org"><abbr 1059title="International Astronomical Union">IAU</abbr></a>’s <a 1060href="https://www.iausofa.org"><abbr 1061title="Standards Of Fundamental Astronomy">SOFA</abbr></a> 1062collection contains C and <a 1063href="https://en.wikipedia.org/wiki/Fortran">Fortran</a> 1064code for converting among time scales like 1065<abbr title="International Atomic Time">TAI</abbr>, 1066<abbr>TDB</abbr>, <abbr>TDT</abbr> and 1067<abbr>UTC</abbr>. It is freely available under the 1068<a href="https://www.iausofa.org/tandc.html">SOFA license</a>.</li> 1069<li><a 1070href="https://www.giss.nasa.gov/tools/mars24/help/notes.html">Mars24 Sunclock 1071– Time on Mars</a> describes Airy Mean Time (<abbr>AMT</abbr>) and the 1072diverse local time 1073scales used by each landed mission on Mars.</li> 1074<li><a href="http://leapsecond.com">LeapSecond.com</a> is 1075dedicated not only to leap seconds but to precise time and frequency 1076in general. It covers the state of the art in amateur timekeeping, and 1077how the art has progressed over the past few decades.</li> 1078<li>The rules for leap seconds are specified in Annex 1 (Time scales) of <a 1079href="https://www.itu.int/rec/R-REC-TF.460-6-200202-I/">Standard-frequency 1080and time-signal emissions</a>, International Telecommunication Union – 1081Radiocommunication Sector (ITU-R) Recommendation TF.460-6 (02/2002).</li> 1082<li><a 1083href="https://www.iers.org/IERS/EN/Publications/Bulletins/bulletins.html"><abbr 1084title="International Earth Rotation and Reference Systems Service">IERS</abbr> 1085Bulletins</a> contains official publications of the International 1086Earth Rotation and Reference Systems Service, which decides when leap 1087seconds occur. 1088The <code><abbr>tz</abbr></code> code and data support leap seconds 1089via an optional <code>"right"</code> configuration where a computer’s internal 1090<code>time_t</code> integer clock counts every <abbr>TAI</abbr> second, 1091as opposed to the default <code>"posix"</code> configuration 1092where the internal clock ignores leap seconds. 1093The two configurations agree for timestamps starting with 1972-01-01 00:00:00 1094<abbr>UTC</abbr> (<code>time_t</code> 63 072 000) and diverge for 1095timestamps starting with <code>time_t</code> 78 796 800, 1096which corresponds to the first leap second 10971972-06-30 23:59:60 <abbr>UTC</abbr> in the <code>"right"</code> configuration, 1098and to 10991972-07-01 00:00:00 <abbr>UTC</abbr> in the <code>"posix"</code> configuration. 1100In practice the two configurations also agree for timestamps before 11011972 even though the historical situation is messy, partly because 1102neither <abbr>UTC</abbr> nor <abbr>TAI</abbr> 1103is well-defined for sufficiently old timestamps.</li> 1104<li><a href="https://kb.meinbergglobal.com/kb/time_sync/ntp/configuration/ntp_leap_second_file">The 1105<abbr>NTP</abbr> Leap Second File</a> covers the text file 1106<code>leap-seconds.list</code>, which lists the currently known leap seconds. 1107The <abbr>IERS</abbr> maintains this file, and a copy is distributed by 1108<code><abbr>tzdb</abbr></code> for use by <abbr>NTP</abbr> implementations like 1109<a href="https://www.ntp.org">classic 1110<code><abbr title="Network Time Protocol Daemon">ntpd</abbr></code></a> 1111and <a href="https://ntpsec.org">NTPsec</a>. 1112The <code><abbr>tz</abbr></code> database also distributes leap second 1113information in a differently-formatted <code>leapseconds</code> text file, 1114as well as in the <code>"right"</code> configuration in binary form; for 1115example, <code>right/UTC</code> can be used 1116by <a href="https://chrony-project.org"><code>chrony</code></a>, 1117another <abbr>NTP</abbr> implementation.</li> 1118<li><a href="https://developers.google.com/time/smear">Leap Smear</a> 1119discusses how to gradually adjust <abbr>POSIX</abbr> clocks near a 1120leap second so that they disagree with <abbr>UTC</abbr> by at most a 1121half second, even though every <abbr>POSIX</abbr> minute has exactly 1122sixty seconds. This approach works with the default <code><abbr>tz</abbr></code> 1123<code>"posix"</code> configuration, is <a 1124href="http://bk1.ntp.org/ntp-stable/README.leapsmear">supported</a> by 1125the abovementioned <abbr>NTP</abbr> implementations, <a 1126href="https://github.com/google/unsmear">supports</a> conversion between 1127<abbr>UTC</abbr> and smeared <abbr>POSIX</abbr> timestamps, and is used by major 1128cloud service providers. However, according to 1129<a href="https://www.rfc-editor.org/rfc/rfc8633#section-3.7.1">§3.7.1 of 1130Network Time Protocol Best Current Practices</a> 1131(Internet <abbr>RFC</abbr> 8633), leap smearing is not suitable for 1132applications requiring accurate <abbr>UTC</abbr> or civil time, 1133and is intended for use only in single, well-controlled environments.</li> 1134<li>The <a 1135href="https://pairlist6.pair.net/mailman/listinfo/leapsecs">Leap 1136Second Discussion List</a> covers <a 1137href="https://www2.unb.ca/gge/Resources/gpsworld.november99.pdf">McCarthy 1138and Klepczynski’s 1999 proposal to discontinue leap seconds</a>, 1139discussed further in 1140<a href="https://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf">The 1141leap second: its history and possible future</a>. 1142<a href="https://www.ucolick.org/~sla/leapsecs/"><abbr>UTC</abbr> 1143might be redefined 1144without Leap Seconds</a> gives pointers on this 1145contentious issue. 1146The General Conference on Weights and Measures 1147<a href="https://www.bipm.org/en/cgpm-2022/resolution-4">decided in 2022</a> 1148to discontinue the use of leap seconds by 2035, and requested that no 1149discontinuous adjustments be made to UTC for at least a century. 1150The World Radiocommunication Conference <a 1151href="https://www.itu.int/dms_pub/itu-r/opb/act/R-ACT-WRC.15-2023-PDF-E.pdf">resolved 1152in 2023</a> to cooperate with this process. One proposal to implement this 1153would replace leap seconds with seven 13-second leap smears occurring once per 1154decade until 2100, with leap smears after that gradually increasing in size. 1155See: 1156<ul> 1157<li>Levine J. <a href="https://www.preprints.org/manuscript/202406.0043/v1">A 1158proposal to change the leap-second adjustments to 1159coordinated universal time</a>. <em>Metrologia.</em> 2024;61(5):055002. doi:<a 1160href="https://doi.org/10.1088/1681-7575/ad6266">10.1088/1681-7575/ad6266</a>.</li> 1161</ul> 1162However, there is still no consensus on whether this is the best way 1163to replace leap seconds. 1164</li> 1165</ul> 1166</section> 1167 1168<section> 1169<h2 id="notation">Time notation</h2> 1170<ul> 1171<li>The <a id="CLDR" href="https://cldr.unicode.org">Unicode Common Locale Data 1172Repository (<abbr>CLDR</abbr>) Project</a> has localizations for time 1173zone names, abbreviations, identifiers, and formats. For example, it 1174contains French translations for “Eastern European Summer Time”, 1175“<abbr title="Eastern European Summer Time">EEST</abbr>”, and “Bucharest”. Its 1176<a href="https://unicode.org/cldr/charts/latest/by_type/">by-type 1177charts</a> show these values for many locales. Data values are available in 1178both <abbr title="Locale Data Markup Language">LDML</abbr> 1179(an <abbr>XML</abbr> format) and <abbr>JSON</abbr>. 1180<li> 1181<a href="https://www.cl.cam.ac.uk/~mgk25/iso-time.html">A summary of 1182the international standard date and time notation</a> covers 1183<a 1184href="https://www.iso.org/standard/70907.html"><em><abbr 1185title="International Organization for Standardization">ISO</abbr> 11868601-1:2019 – Date and time – Representations for information 1187interchange – Part 1: Basic rules</em></a>.</li> 1188<li> 1189<a href="https://www.w3.org/TR/xmlschema/#dateTime"><abbr>XML</abbr> 1190Schema: Datatypes – dateTime</a> specifies a format inspired by 1191<abbr>ISO</abbr> 8601 that is in common use in <abbr>XML</abbr> data.</li> 1192<li><a href="https://www.rfc-editor.org/rfc/rfc5322#section-3.3">§3.3 of 1193Internet Message Format</a> (Internet <abbr>RFC</abbr> 5322) 1194specifies the time notation used in email and <a 1195href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"><abbr>HTTP</abbr></a> 1196headers.</li> 1197<li> 1198<a href="https://www.rfc-editor.org/rfc/rfc3339">Date and Time 1199on the Internet: Timestamps</a> (Internet <abbr>RFC</abbr> 3339) 1200specifies an <abbr>ISO</abbr> 8601 profile for use in new Internet protocols. 1201An extension, <a href="https://www.rfc-editor.org/rfc/rfc9557">Date 1202and Time on the Internet: Timestamps with Additional Information</a> 1203(Internet <abbr>RFC</abbr> 9557) extends this profile 1204to let you specify the <code><abbr>tzdb</abbr></code> timezone of a timestamp 1205via suffixes like <code>[Asia/Tokyo]</code>. 1206<li> 1207<a href="https://web.archive.org/web/20190130042457/https://www.hackcraft.net/web/datetime/">Date & Time 1208Formats on the Web</a> surveys web- and Internet-oriented date and time 1209formats.</li> 1210<li>Alphabetic time zone abbreviations should not be used as unique 1211identifiers for <abbr>UT</abbr> offsets as they are ambiguous in 1212practice. For example, in English-speaking North America 1213“<abbr>CST</abbr>” denotes 6 hours behind <abbr>UT</abbr>, 1214but in China it denotes 8 hours ahead of <abbr>UT</abbr>, 1215and French-speaking North Americans prefer 1216“<abbr title="Heure Normale du Centre">HNC</abbr>” to 1217“<abbr>CST</abbr>”. The <code><abbr>tz</abbr></code> 1218database contains English abbreviations for many timestamps; 1219unfortunately some of these abbreviations were merely the database maintainers’ 1220inventions, and these have been removed when possible.</li> 1221<li>Numeric time zone abbreviations typically count hours east of 1222<abbr>UT</abbr>, e.g., +09 for Japan and 1223−10 for Hawaii. However, <abbr>POSIX</abbr> proleptic 1224<code><abbr>TZ</abbr></code> settings use the opposite convention. 1225For example, one might use <code><abbr>TZ</abbr>="<abbr 1226title="Japan Standard Time">JST</abbr>-9"</code> and 1227<code><abbr>TZ</abbr>="<abbr title="Hawaii Standard Time">HST</abbr>10"</code> 1228for Japan and Hawaii, respectively. If the 1229<code><abbr>tz</abbr></code> database is available, it is usually better to use 1230settings like <code><abbr>TZ</abbr>="Asia/Tokyo"</code> and 1231<code><abbr>TZ</abbr>="Pacific/Honolulu"</code> instead, as this should avoid 1232confusion, handle old timestamps better, and insulate you better from 1233any future changes to the rules. One should never set 1234<abbr>POSIX</abbr> <code><abbr>TZ</abbr></code> to a value like 1235<code>"GMT-9"</code>, though, since this would incorrectly imply that 1236local time is nine hours ahead of <abbr>UT</abbr> and the time zone 1237is called “<abbr>GMT</abbr>”.</li> 1238</ul> 1239</section> 1240 1241<section> 1242<h2 id="see-also">See also</h2> 1243<ul> 1244<li><a href="theory.html">Theory and pragmatics of the 1245<code><abbr>tz</abbr></code> code and data</a></li> 1246<li><a href="tz-art.html">Time and the Arts</a></li> 1247</ul> 1248</section> 1249 1250<footer> 1251<hr> 1252This web page is in the public domain, so clarified as of 12532009-05-17 by Arthur David Olson. 1254<br> 1255Please send corrections to this web page to the 1256<a href="mailto:tz@iana.org">time zone mailing list</a>. 1257The mailing list and its archives are public, 1258so please do not send confidential information. 1259</footer> 1260</body> 1261</html> 1262