Home | History | Annotate | Line # | Download | only in time
tz-link.html revision 1.5
      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4 <title>Sources for time zone and daylight saving time data</title>
      5 <meta charset="UTF-8">
      6 <style>
      7 pre {margin-left: 2em; white-space: pre-wrap;}
      8 </style>
      9 </head>
     10 <body>
     11 <h1>Sources for time zone and daylight saving time data</h1>
     12 <p>
     13 <a href="https://en.wikipedia.org/wiki/Time_zone">Time zone</a> and
     14 <a href="https://en.wikipedia.org/wiki/Daylight_saving_time">daylight-saving</a>
     15 rules are controlled by individual
     16 governments. They are sometimes changed with little notice, and their
     17 histories and planned futures are often recorded only fitfully. Here
     18 is a summary of attempts to organize and record relevant data in this
     19 area.
     20 </p>
     21 <h2 id="tzdb">The <code><abbr title="time zone">tz</abbr></code> database</h2>
     22 <p>
     23 The <a href="https://en.wikipedia.org/wiki/Public_domain">public-domain</a>
     24 time zone database contains code and data
     25 that represent the history of local time
     26 for many representative locations around the globe.
     27 It is updated periodically to reflect changes made by political bodies
     28 to time zone boundaries and daylight saving rules.
     29 This database (known as <code><abbr>tz</abbr></code>,
     30 <code><abbr>tzdb</abbr></code>, or <code>zoneinfo</code>)
     31 is used by several implementations,
     32 including
     33 <a href="https://www.gnu.org/software/libc/">the
     34 <abbr title="GNU's Not Unix">GNU</abbr>
     35 C Library</a> (used in
     36 <a href="https://en.wikipedia.org/wiki/Linux"><abbr>GNU</abbr>/Linux</a>),
     37 <a href="https://www.android.com">Android</a>,
     38 <a href="https://www.freebsd.org">Free<abbr
     39 title="Berkeley Software Distribution">BSD</abbr></a>,
     40 <a href="https://netbsd.org">Net<abbr>BSD</abbr></a>,
     41 <a href="https://www.openbsd.org">Open<abbr>BSD</abbr></a>,
     42 <a href="https://www.chromium.org/chromium-os">Chromium OS</a>,
     43 <a href="https://cygwin.com">Cygwin</a>,
     44 <a href="http://www.delorie.com/djgpp/"><abbr
     45 title="DJ's GNU Programming Platform">DJGPP</abbr></a>,
     46 <a href="https://en.wikipedia.org/wiki/MINIX">MINIX</a>,
     47 <a href="https://www.mysql.com">MySQL</a>,
     48 <a href="https://en.wikipedia.org/wiki/WebOS"><abbr
     49 title="Web Operating System">webOS</abbr></a>,
     50 <a href="https://ibm.com/aix"><abbr
     51 title="Advanced Interactive eXecutive">AIX</abbr></a>,
     52 <a href="https://en.wikipedia.org/wiki/BlackBerry_10">BlackBerry 10</a>,
     53 <a href="https://www.apple.com/ios/"><abbr
     54 title="iPhone OS">iOS</abbr></a>,
     55 <a href="https://www.apple.com/macos/">macOS</a>,
     56 <a href="https://www.microsoft.com/en-us/windows">Microsoft Windows</a>,
     57 <a href="https://www.hpe.com/info/openvms">Open<abbr
     58 title="Virtual Memory System">VMS</abbr></a>,
     59 <a href="https://www.oracle.com/database/index.html">Oracle Database</a>, and
     60 <a href="https://www.oracle.com/solaris">Oracle Solaris</a>.</p>
     61 <p>
     62 Each main entry in the database represents a <dfn>timezone</dfn>
     63 for a set of civil-time clocks that have all agreed since 1970.
     64 Timezones are typically identified by continent or ocean and then by the
     65 name of the largest city within the region containing the clocks.
     66 For example, <code>America/New_York</code>
     67 represents most of the <abbr title="United States">US</abbr> eastern time zone;
     68 <code>America/Phoenix</code> represents most of Arizona, which
     69 uses mountain time without daylight saving time (<abbr>DST</abbr>);
     70 <code>America/Detroit</code> represents most of Michigan, which uses
     71 eastern time but with different <abbr>DST</abbr> rules in 1975;
     72 and other entries represent smaller regions like Starke County,
     73 Indiana, which switched from central to eastern time in 1991
     74 and switched back in 2006.
     75 To use the database on an extended <a
     76 href="https://en.wikipedia.org/wiki/POSIX"><abbr
     77 title="Portable Operating System Interface">POSIX</abbr></a>
     78 implementation set the <code><abbr>TZ</abbr></code>
     79 environment variable to the location's full name,
     80 e.g., <code><abbr>TZ</abbr>="America/New_York"</code>.</p>
     81 <p>
     82 Associated with each timezone is a history of offsets from
     83 <a href="https://en.wikipedia.org/wiki/Universal_Time">Universal
     84 Time</a> (<abbr>UT</abbr>), which is <a
     85 href="https://en.wikipedia.org/wiki/Greenwich_Mean_Time">Greenwich Mean
     86 Time</a> (<abbr>GMT</abbr>) with days beginning at midnight;
     87 for timestamps after 1960 this is more precisely <a
     88 href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time">Coordinated
     89 Universal Time</a> (<abbr>UTC</abbr>).
     90 The database also records when daylight saving time was in use,
     91 along with some time zone abbreviations such as <abbr>EST</abbr>
     92 for Eastern Standard Time in the <abbr>US</abbr>.</p>
     93 <h2 id="download">Downloading the <code><abbr>tz</abbr></code> database</h2>
     94 <p>
     95 The following <a
     96 href="https://en.wikipedia.org/wiki/Unix_shell">shell</a> commands download
     97 the latest release's two
     98 <a href="https://en.wikipedia.org/wiki/Tar_(computing)">tarballs</a>
     99 to a <abbr>GNU</abbr>/Linux or similar host.</p>
    100 <pre><code>mkdir tzdb
    101 cd tzdb
    102 <a href="https://www.gnu.org/software/wget/">wget</a> https://www.iana.org/time-zones/repository/tzcode-latest.tar.gz
    103 wget https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz
    104 <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 -
    105 gzip -dc tzdata-latest.tar.gz | tar -xf -
    106 </code></pre>
    107 <p>Alternatively, the following shell commands download the same
    108 release in a single-tarball format containing extra data
    109 useful for regression testing:</p>
    110 <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>
    111 <a href="https://www.nongnu.org/lzip/">lzip</a> -dc tzdb-latest.tar.lz | tar -xf -
    112 </code></pre>
    113 <p>These commands use convenience links to the latest release
    114 of the <code><abbr>tz</abbr></code> database hosted by the
    115 <a href="https://www.iana.org/time-zones">Time Zone Database website</a>
    116 of the <a href="https://www.iana.org">Internet Assigned Numbers
    117 Authority (IANA)</a>.
    118 Older releases are in files named
    119 <code>tzcode<var>V</var>.tar.gz</code>,
    120 <code>tzdata<var>V</var>.tar.gz</code>, and
    121 <code>tzdb-<var>V</var>.tar.lz</code>,
    122 where <code><var>V</var></code> is the version.
    123 Since 1996, each version has been a four-digit year followed by
    124 lower-case letter (<samp>a</samp> through <samp>z</samp>,
    125 then <samp>za</samp> through <samp>zz</samp>, then <samp>zza</samp>
    126 through <samp>zzz</samp>, and so on).
    127 Since version 2016h, each release has contained a text file named
    128 "<samp>version</samp>" whose first (and currently only) line is the version.
    129 The releases are also available in an
    130 <a href="ftp://ftp.iana.org/tz/releases/"><abbr
    131 title="File Transfer Protocol">FTP</abbr> directory</a> via a
    132 less-secure protocol.</p>
    133 <p>Alternatively, a development repository of code and data can be
    134 retrieved from <a href="https://github.com">GitHub</a> via the shell
    135 command:</p>
    136 <pre><code><a href="https://git-scm.com">git</a> clone <a href="https://github.com/eggert/tz">https://github.com/eggert/tz</a>
    137 </code></pre>
    138 <p>
    139 Since version 2012e, each release has been tagged in development repositories.
    140 Untagged commits are less well tested and probably contain
    141 more errors.</p>
    142 <p>
    143 After obtaining the code and data files, see the
    144 <code>README</code> file for what to do next.
    145 The code lets you compile the <code><abbr>tz</abbr></code> source files into
    146 machine-readable binary files, one for each location. The binary files
    147 are in a special timezone information format (<dfn><abbr>TZif</abbr></dfn>)
    148 specified by <a href="https://tools.ietf.org/html/8536">Internet
    149 <abbr>RFC</abbr> 8536</a>.
    150 The code also lets
    151 you read a <abbr>TZif</abbr> file and interpret timestamps for that
    152 location.</p>
    153 <h2 id="changes">Changes to the <code><abbr>tz</abbr></code> database</h2>
    154 <p>
    155 The <code><abbr>tz</abbr></code> code and data
    156 are by no means authoritative. If you find errors, please
    157 send changes to <a href="mailto:tz (a] iana.org"><code>tz (a] iana.org</code></a>,
    158 the time zone mailing list. You can also <a
    159 href="https://mm.icann.org/mailman/listinfo/tz">subscribe</a> to it
    160 and browse the <a
    161 href="https://mm.icann.org/pipermail/tz/">archive of old
    162 messages</a>.
    163 <a href="https://tzdata-meta.timtimeonline.com/">Metadata for mailing list
    164 discussions</a> and corresponding data changes can be
    165 generated <a href="https://github.com/timparenti/tzdata-meta">automatically</a>.
    166 </p>
    167 <p>
    168 If your government plans to change its time zone boundaries or
    169 daylight saving rules, inform <code>tz (a] iana.org</code> well in
    170 advance, as this will coordinate updates to many cell phones,
    171 computers, and other devices around the world. With
    172 less than a year's notice there is a good chance that some
    173 computer-based clocks will operate incorrectly after the change, due
    174 to delays in propagating updates to software and data. The shorter
    175 the notice, the more likely clock problems will arise; see "<a
    176 href="https://codeofmatt.com/2016/04/23/on-the-timing-of-time-zone-changes/">On
    177 the Timing of Time Zone Changes</a>" for examples.
    178 </p>
    179 <p>
    180 Changes to the <code><abbr>tz</abbr></code> code and data are often
    181 propagated to clients via operating system updates, so
    182 client <code><abbr>tz</abbr></code> data can often be corrected by
    183 applying these updates. With GNU/Linux and similar systems, if your
    184 maintenance provider has not yet adopted the
    185 latest <code><abbr>tz</abbr></code> data, you can often short-circuit
    186 the process by tailoring the generic instructions in
    187 the <code><abbr>tz</abbr> README</code> file and installing the latest
    188 data yourself. System-specific instructions for installing the
    189 latest <code><abbr>tz</abbr></code> data have also been published
    190 for <a href="https://www.ibm.com/developerworks/aix/library/au-aix-olson-time-zone/index.html"><abbr>AIX</abbr></a>,
    191 <a
    192 href="https://play.google.com/store/apps/details?id=com.google.android.timezone.data">Android</a>,
    193 <a
    194 href="http://userguide.icu-project.org/datetime/timezone"><abbr
    195 title="International Components for Unicode">ICU</abbr></a>,
    196 <a href="https://developer.ibm.com/javasdk/support/dst/jtzu/"><abbr>IBM</abbr></a>
    197 and <a
    198 href="https://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">Oracle</a>
    199 Java, <a href="https://www.joda.org/joda-time/tz_update.html">Joda-Time</a>, <a
    200 href="https://dev.mysql.com/doc/refman/en/time-zone-support.html">MySQL</a>,
    201 and <a
    202 href="https://nodatime.org/userguide/tzdb">Noda Time</a> (see below).
    203 </p>
    204 <p>Sources for the <code><abbr>tz</abbr></code> database are
    205 <a href="https://en.wikipedia.org/wiki/UTF-8"><abbr
    206 title="Unicode Transformation Format 8-bit">UTF-8</abbr></a>
    207 <a href="https://en.wikipedia.org/wiki/Text_file">text files</a>
    208 with lines terminated by <a href="https://en.wikipedia.org/wiki/Newline"><abbr
    209 title="linefeed">LF</abbr></a>,
    210 which can be modified by common text editors such
    211 as <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>,
    212 <a href="https://wiki.gnome.org/Apps/Gedit">gedit</a>, and
    213 <a href="https://www.vim.org">vim</a>.
    214 Specialized source-file editing can be done via the
    215 <a href="https://packagecontrol.io/packages/zoneinfo">Sublime
    216 zoneinfo</a> package for <a
    217 href="https://www.sublimetext.com">Sublime Text</a> and the <a
    218 href="https://marketplace.visualstudio.com/items?itemName=gilmoreorless.vscode-zoneinfo">VSCode
    219 zoneinfo</a> extension for <a href="https://code.visualstudio.com">Visual
    220 Studio Code</a>.
    221 </p>
    222 <p>
    223 For further information about updates, please see
    224 <a href="https://tools.ietf.org/html/rfc6557">Procedures for
    225 Maintaining the Time Zone Database</a> (Internet <abbr
    226 title="Request For Comments">RFC</abbr> 6557). More detail can be
    227 found in <a href="theory.html">Theory and pragmatics of the tz code and data</a>.
    228 <a href="https://a0.github.io/a0-tzmigration/">A0 TimeZone Migration</a>
    229 displays changes between recent <code><abbr>tzdb</abbr></code> versions.
    230 </p>
    231 <h2 id="commentary">Commentary on the <code><abbr>tz</abbr></code> database</h2>
    232 <ul>
    233 <li>The article
    234 <a href="https://en.wikipedia.org/wiki/Tz_database">tz database</a> is
    235 an encyclopedic summary.</li>
    236 <li><a href="tz-how-to.html">How to Read the
    237 tz Database Source Files</a> explains the <code><abbr>tz</abbr></code>
    238 database format.</li>
    239 <li><a
    240 href="https://blog.jonudell.net/2009/10/23/a-literary-appreciation-of-the-olsonzoneinfotz-database/">A
    241 literary appreciation of the Olson/Zoneinfo/tz database</a> comments on the
    242 database's style.</li>
    243 </ul>
    244 <h2 id="web">Web sites using recent versions of the
    245 <code><abbr>tz</abbr></code> database</h2>
    246 <p>
    247 These are listed roughly in ascending order of complexity and fanciness.
    248 </p>
    249 <ul>
    250 <li><a href="https://time.is">Time.is</a> shows locations'
    251 time and zones.</li>
    252 <li><a href="https://www.timejones.com">TimeJones.com</a>,
    253 <a href="https://timezoneconverterapp.com">Time Zone Converter</a> and
    254 <a href="http://worldclock.com">The World Clock</a>
    255 are time zone converters.</li>
    256 <li><a
    257 href="http://twiki.org/cgi-bin/xtra/tzdatepick.html">Date and Time Gateway</a>
    258 lets you see the <code><abbr>TZ</abbr></code> values directly.</li>
    259 <li><a
    260 href="http://www.convertit.com/Go/ConvertIt/World_Time/Current_Time.ASP">Current
    261 Time in 1000 Places</a> uses descriptions of the values.</li>
    262 <li><a href="http://www.timezoneconverter.com/cgi-bin/tzc.tzc">Time Zone
    263 Converter</a>
    264 uses a pulldown menu.</li>
    265 <li><a href="http://home.kpn.nl/vanadovv/time/TZworld.html">Complete
    266 timezone information for all countries</a> displays tables of DST rules.
    267 <li><a href="https://www.timeanddate.com/worldclock/">The World Clock &ndash;
    268 Worldwide</a> lets you sort zone names and convert times.</li>
    269 <li><a href="https://24timezones.com">24TimeZones</a> has a world
    270 time map and a time converter.</li>
    271 <li><a href="https://www.zeitverschiebung.net/en/">Time Difference</a>
    272 calculates the current time difference between locations.</li>
    273 <li><a href="http://www.wx-now.com">Weather Now</a> and
    274 <a href="http://www.thetimenow.com">The Time Now</a> list the weather too.</li>
    275 </ul>
    276 <h2 id="protocols">Network protocols for <code><abbr>tz</abbr></code> data</h2>
    277 <ul>
    278 <li>The <a href="https://www.ietf.org">Internet Engineering Task Force</a>'s
    279 <a href="https://datatracker.ietf.org/wg/tzdist/charter/">Time Zone Data
    280 Distribution Service (tzdist) working group</a> defined <a
    281 href="https://tools.ietf.org/html/rfc7808">TZDIST</a>
    282 (Internet <abbr>RFC</abbr> 7808), a time zone data distribution service,
    283 along with <a href="https://tools.ietf.org/html/rfc7809">CalDAV</a>
    284 (Internet <abbr>RFC</abbr> 7809), a calendar access protocol for
    285 transferring time zone data by reference.
    286 The <a href="https://www.ietf.org/mailman/listinfo/tzdist-bis">tzdist-bis
    287 mailing list</a> discusses the Internet draft <a
    288 id="TZDIST-Geolocate"
    289 href="https://tools.ietf.org/html/draft-murchison-tzdist-geolocate">TZDIST
    290 Geolocate Extension</a>, which lets a client determine its timezone
    291 from its geographic location using a <a
    292 href="https://tools.ietf.org/html/rfc5870">'geo' URI</a>.</li>
    293 <li>The <a href="https://tools.ietf.org/html/rfc5545">
    294 Internet Calendaring and Scheduling Core Object Specification
    295 (iCalendar)</a> (Internet <abbr>RFC</abbr> 5445)
    296 covers time zone
    297 data; see its VTIMEZONE calendar component.
    298 The iCalendar format requires specialized parsers and generators; a
    299 variant <a href="https://tools.ietf.org/html/rfc6321">xCal</a>
    300 (Internet <abbr>RFC</abbr> 6321) uses
    301 <a href="https://www.w3.org/XML/"><abbr
    302 title="Extensible Markup Language">XML</abbr></a> format, and a variant
    303 <a href="https://tools.ietf.org/html/rfc7265">jCal</a>
    304 (Internet <abbr>RFC</abbr> 7265)
    305 uses <a href="https://www.json.org"><abbr
    306 title="JavaScript Object Notation">JSON</abbr></a> format.</li>
    307 </ul>
    308 <h2 id="compilers">Other <code><abbr>tz</abbr></code> compilers</h2>
    309 <ul>
    310 <li><a href="https://sourceforge.net/projects/vzic/">Vzic</a> is a <a
    311 href="https://en.wikipedia.org/wiki/C_%28programming_language%29">C</a>
    312 program that compiles
    313 <code><abbr>tz</abbr></code> source into iCalendar-compatible VTIMEZONE files.
    314 Vzic is freely
    315 available under the <a
    316 href="https://www.gnu.org/copyleft/gpl.html"><abbr>GNU</abbr>
    317 General Public License (<abbr
    318 title="General Public License">GPL</abbr>)</a>.</li>
    319 <li><a href="https://sourceforge.net/projects/tzical/">tziCal &ndash; tz
    320 database conversion utility</a> is like Vzic, except for the <a
    321 href="https://www.microsoft.com/net">.NET framework</a>
    322 and with a <abbr>BSD</abbr>-style license.</li>
    323 <li><a
    324 href="https://metacpan.org/release/DateTime-TimeZone">DateTime::TimeZone</a>
    325 contains a script <code>parse_olson</code> that compiles
    326 <code><abbr>tz</abbr></code> source into <a href="https://www.perl.org">Perl</a>
    327 modules. It is part of the Perl <a
    328 href="https://github.com/houseabsolute/DateTime.pm/wiki">DateTime Project</a>,
    329 which is freely
    330 available under both the <abbr>GPL</abbr> and the Perl Artistic
    331 License. DateTime::TimeZone also contains a script
    332 <code>tests_from_zdump</code> that generates test cases for each clock
    333 transition in the <code><abbr>tz</abbr></code> database.</li>
    334 <li>The <a href="https://howardhinnant.github.io/date/tz.html">Time Zone
    335 Database Parser</a> is a
    336 <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> parser and
    337 runtime library that is <a
    338 href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0355r4.html">moving
    339 forward</a> for inclusion in the next iteration of <a
    340 href="https://isocpp.org/std/the-standard"><em><abbr
    341 title="International Organization for Standardization">ISO</abbr>
    342 International Standard ISO/IEC 14882:2017(E) &ndash; Programming
    343 Language C++</em></a>.
    344 It is freely available under the
    345 <abbr title="Massachusetts Institute of Technology">MIT</abbr> license.</li>
    346 <li><a id="ICU" href="http://site.icu-project.org">International Components for
    347 Unicode (<abbr>ICU</abbr>)</a> contains C/C++ and <a
    348 href="https://en.wikipedia.org/wiki/Java_%28programming_language%29">Java</a>
    349 libraries for internationalization that
    350 has a compiler from <code><abbr>tz</abbr></code> source
    351 and from <abbr title="Common Locale Data Repository">CLDR</abbr> data
    352 (mentioned <a href="#CLDR">below</a>)
    353 into an <abbr>ICU</abbr>-specific format.
    354 <abbr>ICU</abbr> is freely available under a
    355 <abbr>BSD</abbr>-style license.</li>
    356 <li>The <a href="https://github.com/lau/tzdata">Tzdata</a> package for
    357 the <a href="https://elixir-lang.org">Elixir</a> language downloads
    358 and compiles tz source and exposes <abbr
    359 title="Application Program Interface">API</abbr>s for use. It is
    360 freely available under the <abbr>MIT</abbr> license.</li>
    361 <li>Java-based compilers and libraries include:
    362 <ul>
    363 <li>The <a
    364 href="https://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">TZUpdater
    365 tool</a> compiles <code><abbr>tz</abbr></code> source into the format used by
    366 Oracle Java.</li>
    367 <li>The <a
    368 href="https://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html">Java
    369 SE <code>java.time</code> <abbr>API</abbr></a> in Java 8 and later
    370 can be supplemented by <a
    371 href="https://www.threeten.org/threeten-extra/">ThreeTen-Extra</a>,
    372 which is freely available under a <abbr>BSD</abbr>-style license.</li>
    373 <li><a href="https://www.joda.org/joda-time/">Joda-Time &ndash; Java date
    374 and time <abbr>API</abbr></a> contains a class
    375 <code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles
    376 <code><abbr>tz</abbr></code> source into a binary format. It inspired
    377 Java 8 <code>java.time</code>, which its users should migrate to once
    378 they can assume Java 8 or later. It is available under the <a
    379 href="https://www.apache.org/licenses/LICENSE-2.0">Apache License</a>.</li>
    380 <li><a href="https://github.com/MenoData/Time4A">Time4A: Advanced date and
    381 time library for Android</a> and
    382 <a href="https://github.com/MenoData/Time4J/">Time4J: Advanced date,
    383 time and interval library for Java</a> compile
    384 <code><abbr>tz</abbr></code> source into a binary format.
    385 Time4A is available under the Apache License and Time4J is
    386 available under the <a
    387 href="https://www.gnu.org/copyleft/lesser.html"><abbr>GNU</abbr> Lesser
    388 General Public License (<abbr title="Lesser General Public
    389 License">LGPL</abbr>)</a>.</li>
    390 <li><abbr>ICU</abbr> (mentioned <a href="#ICU">above</a>) contains compilers and
    391 Java-based libraries.</li>
    392 </ul>
    393 <li><a href="https://nodatime.org">Noda Time &ndash; Date and
    394 time <abbr>API</abbr> for .NET</a>
    395 is like Joda-Time and Time4J, but for the .NET framework instead of Java.
    396 It is freely available under the Apache License.</li>
    397 <li><a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>-based
    398 compilers and libraries include:
    399 <ul>
    400 <li><a
    401 href="https://github.com/kshetline/compact-time-zone-generator">CompactTimeZoneGenerator</a>
    402 compiles time zone data into a compact form designed for
    403 JavaScript. It is freely available under a combination of
    404 the <abbr>MIT</abbr> license and the Apache License.</li>
    405 <li><a href="https://momentjs.com/timezone/">Moment Timezone</a> is a
    406 plugin for the <a href="https://momentjs.com">Moment.js</a> date
    407 manipulation library. It is freely available under the <abbr>MIT</abbr>
    408 license.</li>
    409 <li><a href="https://github.com/mde/timezone-js">TimezoneJS.Date</a>'s
    410 <abbr>API</abbr> is upward compatible with standard JavaScript
    411 Dates. It is freely available under the Apache License.</li>
    412 <li><a href="https://github.com/sproutsocial/walltime-js">Walltime-js</a>
    413 translates <abbr>UT</abbr> to local time. It is freely available under
    414 the <abbr>MIT</abbr> license.</li>
    415 </ul>
    416 <li><a href="https://github.com/JuliaTime/">JuliaTime</a> contains a
    417 compiler from <code><abbr>tz</abbr></code> source into
    418 <a href="https://julialang.org/">Julia</a>. It is freely available
    419 under the <abbr>MIT</abbr> license.</li>
    420 <li><a href="https://github.com/pavkam/tzdb">Delphi/<abbr
    421 title="Free Pascal Compiler">FPC</abbr> Time Zone Database</a>
    422 compiles from <code><abbr>tz</abbr></code> source into
    423 <a href="https://en.wikipedia.org/wiki/Object_Pascal">Object Pascal</a>
    424 as compiled by <a href="https://en.wikipedia.org/wiki/Delphi_(IDE)">Delphi</a>
    425 and <a
    426 href="https://en.wikipedia.org/wiki/Free_Pascal"><abbr>FPC</abbr></a>.
    427 It is freely available under a <abbr>BSD</abbr>-style license.</li>
    428 <li><a href="http://pytz.sourceforge.net">pytz &ndash; World Timezone
    429 Definitions for Python</a> compiles <code><abbr>tz</abbr></code> source into
    430 <a href="https://www.python.org">Python</a>.
    431 It is freely available under a <abbr>BSD</abbr>-style license.</li>
    432 <li><a href="https://tzinfo.github.io">TZInfo &ndash;
    433 Ruby Timezone Library</a>
    434 compiles <code><abbr>tz</abbr></code> source into
    435 <a href="https://www.ruby-lang.org/en/">Ruby</a>.
    436 It is freely available under the <abbr>MIT</abbr> license.</li>
    437 <li>The <a href="http://www.squeaksource.com/Chronos/">Chronos Date/Time
    438 Library</a> is
    439 a <a href="https://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a> class
    440 library that compiles <code><abbr>tz</abbr></code> source into a time
    441 zone repository whose format
    442 is either proprietary or an <abbr>XML</abbr>-encoded
    443 representation.</li>
    444 <li><a id="Tcl" href="https://tcl.tk">Tcl</a>
    445 contains a developer-oriented parser that compiles <code><abbr>tz</abbr></code>
    446 source into text files, along with a runtime that can read those
    447 files. Tcl is freely available under a <abbr>BSD</abbr>-style
    448 license.</li>
    449 </ul>
    450 <h2 id="TZif">Other <abbr>TZif</abbr> readers</h2>
    451 <ul>
    452 <li>The <a
    453 href="https://www.gnu.org/software/libc/"><abbr>GNU</abbr> C
    454 Library</a>
    455 has an independent, thread-safe implementation of
    456 a <abbr>TZif</abbr> file reader.
    457 This library is freely available under the LGPL
    458 and is widely used in <abbr>GNU</abbr>/Linux systems.</li>
    459 <li><a href="https://www.gnome.org">GNOME</a>'s
    460 <a href="https://developer.gnome.org/glib/">GLib</a> has
    461 a <abbr>TZif</abbr> file reader written in C that
    462 creates a <code>GTimeZone</code> object representing sets
    463 of <abbr>UT</abbr> offsets.
    464 It is freely available under the <abbr>LGPL</abbr>.</li>
    465 <li>The
    466 <a href="https://github.com/bloomberg/bde/wiki">BDE Standard Library</a>'s
    467 <code>baltzo::TimeZoneUtil</code> component contains a C++
    468 implementation of a <abbr>TZif</abbr> file reader. It is freely available under
    469 the Apache License.</li>
    470 <li><a href="https://github.com/google/cctz">CCTZ</a> is a simple C++
    471 library that translates between <abbr>UT</abbr> and civil time and
    472 can read <abbr>TZif</abbr> files. It is freely available under the Apache
    473 License.</li>
    474 <li><a href="http://bmsi.com/java/#TZ">ZoneInfo.java</a>
    475 is a <abbr>TZif</abbr> file reader written in Java.
    476 It is freely available under the <abbr>LGPL</abbr>.</li>
    477 <li><a href="https://github.com/derickr/timelib">Timelib</a> is a C
    478 library that reads <abbr>TZif</abbr> files and converts
    479 timestamps from one time zone or format to another.
    480 It is used by <a href="https://secure.php.net"><abbr
    481 title="PHP: Hypertext Preprocessor">PHP</abbr></a>,
    482 <a href="https://hhvm.com"><abbr title="HipHop Virtual Machine">HHVM</abbr></a>,
    483 and <a href="https://www.mongodb.com">MongoDB</a>.
    484 It is freely available under the <abbr>MIT</abbr> license.</li>
    485 <li><a href="https://github.com/bigeasy/timezone">Timezone</a> is a
    486 JavaScript library that supports date arithmetic that is time zone
    487 aware. It is freely available under the <abbr>MIT</abbr> license.</li>
    488 <li>Tcl, mentioned <a href="#Tcl">above</a>, also contains a
    489 <abbr>TZif</abbr> file reader.</li>
    490 <li><a href="https://metacpan.org/pod/DateTime::TimeZone::Tzfile">
    491 DateTime::TimeZone::Tzfile</a>
    492 is a <abbr>TZif</abbr> file reader written in Perl.
    493 It is freely available under the same terms as Perl
    494 (dual <abbr>GPL</abbr> and Artistic license).</li>
    495 <li>The
    496 public-domain <a href="https://github.com/dbaron/tz.js">tz.js</a>
    497 library contains a Python tool that
    498 converts <abbr>TZif</abbr> data into
    499 <abbr>JSON</abbr>-format data suitable for use
    500 in its JavaScript library for time zone conversion. Dates before 1970
    501 are not supported.</li>
    502 <li>The <a
    503 href="https://hackage.haskell.org/package/timezone-olson">timezone-olson</a>
    504 package contains <a href="https://www.haskell.org">Haskell</a> code that
    505 parses and uses <abbr>TZif</abbr> data. It is freely
    506 available under a <abbr>BSD</abbr>-style license.</li>
    507 </ul>
    508 <h2 id="software">Other <code><abbr>tz</abbr></code>-based time zone software</h2>
    509 <ul>
    510 <li><a href="https://foxclocks.org">FoxClocks</a>
    511 is an extension for <a href="https://www.google.com/chrome/">Google
    512 Chrome</a> and for <a
    513 href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Toolkit_API">Mozilla
    514 Toolkit</a> applications like <a
    515 href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a> and <a
    516 href="https://www.mozilla.org/en-US/thunderbird/">Thunderbird</a>.
    517 It displays multiple clocks in the application window, and has a mapping
    518 interface to <a href="https://www.google.com/earth/">Google Earth</a>.
    519 It is freely available under the <abbr>GPL</abbr>.</li>
    520 <li><a href="https://golang.org">Go programming language</a>
    521 implementations contain a copy of a 32-bit subset of a recent
    522 <code><abbr>tz</abbr></code> database in a
    523 Go-specific format.</li>
    524 <li><a
    525 href="http://users.skynet.be/Peter.Verthez/projects/intclock/">International
    526 clock (intclock)</a> is a clock that displays multiple time zones on
    527 <abbr>GNU</abbr>/Linux and similar systems. It is freely available
    528 under the <abbr>GPL</abbr>.</li>
    529 <li>Microsoft Windows 8.1
    530 and later has <code><abbr>tz</abbr></code> data and <abbr>CLDR</abbr>
    531 data (mentioned <a href="#CLDR">below</a>) used by the
    532 <a href="https://en.wikipedia.org/wiki/Windows_Runtime">Windows Runtime</a> /
    533 <a href="https://en.wikipedia.org/wiki/Universal_Windows_Platform">Universal Windows Platform</a> classes
    534 <a href="https://docs.microsoft.com/uwp/api/Windows.Globalization.DateTimeFormatting.DateTimeFormatter"><code>DateTimeFormatter</code></a> and
    535 <a href="https://docs.microsoft.com/uwp/api/windows.globalization.calendar"><code>Calendar</code></a>.
    536 <a id="System.TimeZoneInfo"
    537 href="https://blogs.msdn.microsoft.com/bclteam/2007/06/07/exploring-windows-time-zones-with-system-timezoneinfo-josh-free/">Exploring
    538 Windows Time Zones with <code>System.TimeZoneInfo</code></a> describes
    539 the older, proprietary method of Microsoft Windows 2000 and later,
    540 which stores time zone data in the
    541 <a href="https://en.wikipedia.org/wiki/Windows_Registry">Windows Registry</a>. The
    542 <a
    543 href="https://unicode.org/cldr/charts/latest/supplemental/zone_tzid.html">Zone &rarr;
    544 Tzid table</a> or <a
    545 href="https://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml"><abbr>XML</abbr>
    546 file</a> of the <abbr>CLDR</abbr> data maps proprietary zone IDs
    547 to <code><abbr>tz</abbr></code> names.
    548 These mappings can be performed programmatically via the <a href="https://github.com/mj1856/TimeZoneConverter">TimeZoneConverter</a> .NET library,
    549 or the ICU Java and C++ libraries mentioned <a href="#ICU">above</a>.
    550 <li><a
    551 href="https://www.oracle.com/java/index.html">Oracle
    552 Java</a> contains a copy of a subset of a recent
    553 <code><abbr>tz</abbr></code> database in a
    554 Java-specific format.</li>
    555 <li><a href="https://relativedata.com/page/Time-Zone-Master">Time Zone
    556 Master</a> is a Microsoft Windows clock program that can automatically
    557 download, compile and use <code><abbr>tz</abbr></code> releases.
    558 The Basic version is free.</li>
    559 <li><a
    560 href="http://veladg.com/velaterra.html">VelaTerra</a> is
    561 a macOS program. Its developers
    562 <a href="http://veladg.com/tzoffer.html">offer free
    563 licenses</a> to <code><abbr>tz</abbr></code> contributors.</li>
    564 </ul>
    565 <h2 id="other-dbs">Other time zone databases</h2>
    566 <ul>
    567 <li><a href="https://www.astro.com/atlas">Time-zone Atlas</a>
    568 is Astrodienst's Web version of Shanks and Pottenger's out-of-print
    569 time zone history atlases
    570 <a href="https://www.worldcat.org/oclc/468828649">for the US</a> and
    571 <a href="https://www.worldcat.org/oclc/76950459">for the world</a>,
    572 now published in <a
    573 href="https://astrocom.com/astrology-products/software/acs-atlas-software">software</a>
    574 form by <a href="https://astrocom.com">ACS-Starcrafts</a>.
    575 Although these extensive atlases
    576 <a href="https://astrologynewsservice.com/opinion/how-astrologers-contributed-to-the-information-age-a-brief-history-of-time/">were
    577 sources for much of the older <code><abbr>tz</abbr></code> data</a>,
    578 they are unreliable as Shanks appears to have
    579 guessed many <abbr>UT</abbr> offsets and transitions. The atlases cite no
    580 sources and do not indicate which entries are guesswork.</li>
    581 <li><a href="https://en.wikipedia.org/wiki/HP-UX">HP-UX</a> has a database in
    582 its own <code>tztab</code>(4) format.</li>
    583 <li>Microsoft Windows has proprietary data mentioned
    584 <a href="#System.TimeZoneInfo">above</a>.</li>
    585 <li><a href="https://www.worldtimeserver.com">World Time Server</a>
    586 is another time zone database.</li>
    587 <li>The <a
    588 href="https://www.iata.org/publications/store/Pages/standard-schedules-information.aspx">Standard
    589 Schedules Information Manual</a> of the
    590 International Air Transport Association
    591 gives current time zone rules for airports served by commercial aviation.</li>
    592 </ul>
    593 <h2 id="maps">Maps</h2>
    594 <ul>
    595 <li>The <a href="https://www.cia.gov/index.html">United States Central
    596 Intelligence Agency (<abbr
    597 title="Central Intelligence Agency">CIA</abbr>)</a> publishes a <a
    598 href="https://www.cia.gov/library/publications/the-world-factbook/graphics/ref_maps/physical/pdf/standard_time_zones_of_the_world.pdf">time
    599 zone map</a>; the
    600 <a
    601 href="https://www.lib.utexas.edu/maps/world.html">Perry&ndash;Casta&ntilde;eda
    602 Library Map Collection</a>
    603 of the University of Texas at Austin has copies of
    604 recent editions.
    605 The pictorial quality is good,
    606 but the maps do not indicate daylight saving time,
    607 and parts of the data are a few years out of date.</li>
    608 <li><a href="https://www.worldtimezone.com">Current time around the world
    609 and standard time zones map of the world</a>
    610 has several fancy time zone maps; it covers Russia particularly well.
    611 The maps' pictorial quality is not quite as good as the
    612 <abbr>CIA</abbr>'s
    613 but the maps are more up to date.</li>
    614 <li><a
    615 href="https://blog.poormansmath.net/how-much-is-time-wrong-around-the-world/">How
    616 much is time wrong around the world?</a> maps the difference between
    617 mean solar and standard time, highlighting areas such as western China
    618 where the two differ greatly. It's a bit out of date, unfortunately.</li>
    619 </ul>
    620 <h2 id="boundaries">Time zone boundaries</h2>
    621 <p>Geographical boundaries between timezones are available
    622 from several <a href="https://en.wikipedia.org/wiki/Geolocation">geolocation</a>
    623 services and other sources.</p>
    624 <ul>
    625 <li><a href="https://github.com/evansiroky/timezone-boundary-builder">Timezone
    626 Boundary Builder</a> extracts
    627 <a href="https://www.openstreetmap.org">Open Street Map</a> data to build
    628 boundaries of <code><abbr>tzdb</abbr></code> timezones.
    629 Its code is freely available under the <abbr>MIT</abbr> license, and
    630 its data entries are freely available under the
    631 <a href="https://opendatacommons.org/licenses/odbl/">Open Data Commons
    632 Open Database License</a>. The maps' borders appear to be quite accurate.</li>
    633 <li>Programmatic interfaces that map geographical coordinates via tz_world to
    634 <code><abbr>tzdb</abbr></code> timezones include:
    635 <ul>
    636 <li><a href="https://github.com/mj1856/GeoTimeZone">GeoTimeZone</a> is
    637 written in <a
    638 href="https://en.wikipedia.org/wiki/C_Sharp_(programming_language)">C#</a>
    639 and is freely available under the <abbr>MIT</abbr> license.</li>
    640 <li>The <a href="https://github.com/bradfitz/latlong">latlong package</a>
    641 is written in Go and is freely available under the Apache License.</li>
    642 <li><a href="https://github.com/drtimcooper/LatLongToTimezone">LatLongToTimezone</a>,
    643 in both Java and
    644 <a href="https://en.wikipedia.org/wiki/Swift_(programming_language)">Swift</a>
    645 form, is freely available under the MIT license.</li>
    646 <li>For <a href="https://nodejs.org/en/">Node.js</a>,
    647 the <a href="https://www.npmjs.com/package/geo-tz">geo-tz module</a>
    648 is freely available under the MIT license, and
    649 the <a href="https://www.npmjs.com/package/tz-lookup">tz-lookup module</a>
    650 is in the public domain.</li>
    651 <li>The <a
    652 href="https://github.com/MrMinimal64/timezonefinder">timezonefinder</a>
    653 library for Python is freely available under the MIT license.
    654 <li>The <a
    655 href="https://github.com/gunyarakun/timezone_finder">timezone_finder</a>
    656 library for Ruby is freely available under the MIT license.</li>
    657 </ul></li>
    658 <li>Free access via a network API, if you register a key, is provided by
    659 the <a
    660 href="https://www.geonames.org/export/web-services.html#timezone">GeoNames
    661 Timezone web service</a>, the <a
    662 href="https://developers.google.com/maps/documentation/timezone/intro">Google
    663 Maps Time Zone API</a>, and
    664 the <a href="https://timezonedb.com">Time Zone Database &amp; API</a>.
    665 Commercial network API access is provided
    666 by <a href="https://askgeo.com">AskGeo</a>
    667 and <a href="https://www.geogarage.com/blog/news-1/post/geogarage-time-zone-api-31">GeoGarage</a>.
    668 </li>
    669 <li>"<a
    670 href="https://stackoverflow.com/questions/16086962/how-to-get-a-time-zone-from-a-location-using-latitude-and-longitude-coordinates/16086964">How
    671 to get a time zone from a location using latitude and longitude
    672 coordinates?</a>" discusses other geolocation possibilities.</li>
    673 <li><a href="http://statoids.com/statoids.html">Administrative
    674 Divisions of Countries ("Statoids")</a> lists
    675 political subdivision data related to time zones.</li>
    676 <li><a href="http://home.kpn.nl/vanadovv/time/Multizones.html">Time
    677 zone boundaries for multizone countries</a> summarizes legal
    678 boundaries between time zones within countries.</li>
    679 <li><a href="http://manifold.net/info/freestuff.shtml">Manifold Software
    680 &ndash; GIS and Database Tools</a> includes a Manifold-format map of
    681 world time zone boundaries distributed under the
    682 <abbr>GPL</abbr>.</li>
    683 <li>A ship within the <a
    684 href="https://en.wikipedia.org/wiki/Territorial_waters">territorial
    685 waters</a> of any nation uses that nation's time. In international
    686 waters, time zone boundaries are meridians 15&deg; apart, except that
    687 <abbr>UT</abbr>&minus;12 and <abbr>UT</abbr>+12 are each 7.5&deg;
    688 wide and are separated by
    689 the 180&deg; meridian (not by the International Date Line, which is
    690 for land and territorial waters only). A captain can change ship's
    691 clocks any time after entering a new time zone; midnight changes are
    692 common.</li>
    693 </ul>
    694 <h2 id="civil">Civil time concepts and history</h2>
    695 <ul>
    696 <li><a href="https://www.nist.gov/pml/time-and-frequency-division/popular-links/walk-through-time">A
    697 Walk through Time</a>
    698 surveys the evolution of timekeeping.</li>
    699 <li>The history of daylight saving time is surveyed in <a
    700 href="http://www.webexhibits.org/daylightsaving/">About Daylight
    701 Saving Time &ndash; History, rationale, laws &amp; dates</a> and summarized in
    702 <a href="http://seizethedaylight.com/dst/">A Brief
    703 History of Daylight Saving Time</a>.</li>
    704 <li><a href="https://www.laphamsquarterly.org/roundtable/time-lords">Time
    705 Lords</a> discusses how authoritarians manipulate civil time.</li>
    706 <li><a href="https://www.w3.org/TR/timezone/">Working with Time Zones</a>
    707 contains guidelines and best practices for software applications that
    708 deal with civil time.</li>
    709 <li><a href="https://www.staff.science.uu.nl/~gent0113/idl/idl.htm">A History of
    710 the International Date Line</a> tells the story of the most important
    711 time zone boundary.</li>
    712 <li><a href="http://statoids.com/tconcept.html">Basic Time
    713 Zone Concepts</a> discusses terminological issues behind time zones.</li>
    714 </ul>
    715 <h2 id="national">National histories of legal time</h2>
    716 <dl>
    717 <dt>Australia</dt>
    718 <dd>The Parliamentary Library has commissioned a <a
    719 href="https://www.aph.gov.au/binaries/library/pubs/rp/2009-10/10rp10.pdf">research
    720 paper on daylight saving time in Australia</a>.
    721 The Bureau of Meteorology publishes a list of <a
    722 href="http://www.bom.gov.au/climate/averages/tables/dst_times.shtml">Implementation
    723 Dates of Daylight Savings Time within Australia</a>.</dd>
    724 <dt>Belgium</dt>
    725 <dd>The Royal Observatory of Belgium maintains a table of <a
    726 href="https://www.astro.oma.be/GENERAL/INFO/nli001a.html"
    727 hreflang="nl">time in Belgium (in Dutch)</a>.</dd>
    728 <dt>Brazil</dt>
    729 <dd>The Time Service Department of the National Observatory
    730 records <a href="http://pcdsh01.on.br/DecHV.html"
    731 hreflang="pt-BR">Brazil's daylight saving time decrees (in
    732 Portuguese)</a>.</dd>
    733 <dt>Canada</dt>
    734 <dd>National Research Council Canada publishes current
    735 and some older information about <a
    736 href="https://www.nrc-cnrc.gc.ca/eng/services/time/time_zones.html">time
    737 zones &amp; daylight saving time</a>.</dd>
    738 <dt>Chile</dt>
    739 <dd>The Hydrographic and Oceanographic Service of the Chilean Navy publishes a
    740 <a href="https://www.horaoficial.cl/historia_hora.html" hreflang="es">history of
    741 Chile's official time (in Spanish)</a>.</dd>
    742 <dt>China</dt>
    743 <dd>The Hong Kong Observatory maintains a
    744 <a href="https://www.hko.gov.hk/gts/time/Summertime.htm">history of
    745  summer time in Hong Kong</a>,
    746 and Macau's Meteorological and Geophysical Bureau maintains a <a
    747 href="http://www.smg.gov.mo/smg/geophysics/e_t_Summer%20Time.htm">similar
    748 history for Macau</a>.
    749 Unfortunately the latter is incomplete and has errors.</dd>
    750 <dt>Czech Republic</dt>
    751 <dd><a href="https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas"
    752 hreflang="cs">When daylight saving time starts and ends (in Czech)</a>
    753 summarizes and cites historical DST regulations.</dd>
    754 <dt>Germany</dt>
    755 <dd>The National Institute for Science and Technology maintains the <a
    756 href="https://www.ptb.de/cms/en/fachabteilungen/abt4/fb-44/ag-441/realisation-of-legal-time-in-germany.html">Realisation
    757 of Legal Time in Germany</a>.</dd>
    758 <dt>Israel</dt>
    759 <dd>The Interior Ministry periodically issues <a
    760 href="ftp://ftp.cs.huji.ac.il/pub/tz/announcements"
    761 hreflang="he">announcements (in Hebrew)</a>.</dd>
    762 <dt>Italy</dt>
    763 <dd>The National Institute of Metrological Research maintains a
    764 <a href="http://oldsite.inrim.it/res/tf/ora_legale_i.shtml" hreflang="it">table
    765 of civil time (in Italian)</a>.</dd>
    766 <dt>Malaysia</dt>
    767 <dd>See Singapore <a href="#Singapore">below</a>.</dd>
    768 <dt>Mexico</dt>
    769 <dd>The Investigation and Analysis Service of the Mexican Library of
    770 Congress has published a <a
    771 href="http://www.diputados.gob.mx/bibliot/publica/inveyana/polisoc/horver/index.htm"
    772 hreflang="es">history of Mexican local time (in Spanish)</a>.</dd>
    773 <dt>Netherlands</dt>
    774 <dd><a href="https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm"
    775 hreflang="nl">Legal time in the Netherlands (in Dutch)</a>
    776 covers the history of local time in the Netherlands from ancient times.</dd>
    777 <dt>New Zealand</dt>
    778 <dd>The Department of Internal Affairs maintains a brief <a
    779 href="https://www.dia.govt.nz/Daylight-Saving-History">History of
    780 Daylight Saving</a>. The privately-maintained <a
    781 href="http://astrologyschool.com/nztime.html">History of New Zealand
    782 time</a> has more details.</dd>
    783 <dt>Singapore</dt>
    784 <dd><a id="Singapore"
    785 href="http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html">Why
    786 is Singapore in the "Wrong" Time Zone?</a> details the
    787 history of legal time in Singapore and Malaysia.</dd>
    788 <dt>United Kingdom</dt>
    789 <dd><a
    790 href="https://www.polyomino.org.uk/british-time/">History of
    791 legal time in Britain</a> discusses in detail the country
    792 with perhaps the best-documented history of clock adjustments.
    793 The National Physical Laboratory also maintains an <a
    794 href="http://www.npl.co.uk/educate-explore/what-is-time/archive-of-summer-time-dates">Archive
    795 of Summer time dates</a>.</dd>
    796 <dt>United States</dt>
    797 <dd>The Department of Transportation's <a
    798 href="https://www.transportation.gov/regulations/recent-time-zone-proceedings">Recent
    799 Time Zone Proceedings</a> lists changes to time zone boundaries.</dd>
    800 <dt>Uruguay</dt>
    801 <dd>The Oceanography, Hydrography, and Meteorology Service of the Uruguayan
    802 Navy (SOHMA) publishes an annual <a
    803 href="http://www.armada.mil.uy/Pagina/institucion/dimat/sohma/almanaque.html" hreflang="es">almanac
    804 (in Spanish)</a>.</dd>
    805 </dl>
    806 <h2 id="precision">Precision timekeeping</h2>
    807 <ul>
    808 <li><a
    809 href="http://leapsecond.com/hpan/an1289.pdf">The
    810 Science of Timekeeping</a> is a thorough introduction
    811 to the theory and practice of precision timekeeping.</li>
    812 <li><a href="https://doi.org/10.1007/978-3-319-59909-0">The Science of
    813 Time 2016</a> contains several freely-readable papers.</li>
    814 <li><a href="http://www.ntp.org"><abbr
    815 title="Network Time Protocol">NTP</abbr>: The Network
    816 Time Protocol</a> (Internet <abbr>RFC</abbr> 5905)
    817 discusses how to synchronize clocks of
    818 Internet hosts.</li>
    819 <li>The <a href="https://www.usenix.org/system/files/conference/nsdi18/nsdi18-geng.pdf"><span style="font-variant: small-caps">Huygens</span></a>
    820 family of software algorithms can achieve accuracy to a few tens of
    821 nanoseconds in scalable server farms without special hardware.</li>
    822 <li>The <a
    823 href="https://www.nist.gov/intelligent-systems-division/ieee-1588">Precision
    824 Time Protocol</a> (<abbr
    825 title="Institute of Electrical and Electronics Engineers">IEEE</abbr> 1588)
    826 can achieve submicrosecond clock accuracy on a local area network
    827 with special-purpose hardware.</li>
    828 <li><a
    829 href="https://tools.ietf.org/html/rfc4833">Timezone
    830 Options for <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr></a>
    831 (Internet <abbr>RFC</abbr> 4833)
    832 specifies a <a
    833 href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol"><abbr>DHCP</abbr></a>
    834 option for a server to configure
    835 a client's time zone and daylight saving settings automatically.</li>
    836 <li><a
    837 href="https://www.cv.nrao.edu/~rfisher/Ephemerides/times.html">Astronomical
    838 Times</a> explains more abstruse astronomical time scales like
    839 <abbr title="Terrestrial Dynamic Time">TDT</abbr>,
    840 <abbr title="Geocentric Coordinate Time">TCG</abbr>, and
    841 <abbr title="Barycentric Dynamic Time">TDB</abbr>.
    842 <a href="https://www.ucolick.org/~sla/leapsecs/timescales.html">Time
    843 Scales</a> goes into more detail, particularly for historical variants.</li>
    844 <li>The <a href="https://www.iau.org"><abbr
    845 title="International Astronomical Union">IAU</abbr></a>'s <a
    846 href="http://www.iausofa.org"><abbr
    847 title="Standards Of Fundamental Astronomy">SOFA</abbr></a>
    848 collection contains C and <a
    849 href="https://en.wikipedia.org/wiki/Fortran">Fortran</a>
    850 code for converting among time scales like
    851 <abbr title="International Atomic Time">TAI</abbr>,
    852 <abbr>TDB</abbr>, <abbr>TDT</abbr> and
    853 <abbr>UTC</abbr>.</li>
    854 <li><a
    855 href="https://www.giss.nasa.gov/tools/mars24/help/notes.html">Mars24 Sunclock
    856 &ndash; Time on Mars</a> describes Airy Mean Time (<abbr>AMT</abbr>) and the
    857 diverse local time
    858 scales used by each landed mission on Mars.</li>
    859 <li><a href="http://leapsecond.com">LeapSecond.com</a> is
    860 dedicated not only to leap seconds but to precise time and frequency
    861 in general. It covers the state of the art in amateur timekeeping, and
    862 how the art has progressed over the past few decades.</li>
    863 <li><a
    864 href="https://www.iers.org/IERS/EN/Publications/Bulletins/bulletins.html"><abbr
    865 title="International Earth Rotation and Reference Systems Service">IERS</abbr>
    866 Bulletins</a> contains official publications of the International
    867 Earth Rotation and Reference Systems Service, which decides when leap
    868 seconds occur. The <code><abbr>tz</abbr></code> code and data support leap seconds
    869 via an optional "<code>right</code>" configuration, as opposed to the
    870 default "<code>posix</code>" configuration.</li>
    871 <li><a href="https://developers.google.com/time/smear">Leap Smear</a>
    872 discusses how to gradually adjust <abbr>POSIX</abbr> clocks near a
    873 leap second so that they disagree with <abbr>UTC</abbr> by at most a
    874 half second, even though every <abbr>POSIX</abbr> minute has exactly
    875 sixty seconds. This approach works with the default <code><abbr>tz</abbr></code>
    876 "<code>posix</code>" configuration, is <a
    877 href="http://bk1.ntp.org/ntp-stable/README.leapsmear">supported</a> by
    878 the <abbr>NTP</abbr> reference implementation, and is used by major
    879 cloud service providers.</li>
    880 <li>The <a
    881 href="https://pairlist6.pair.net/mailman/listinfo/leapsecs">Leap
    882 Second Discussion List</a> covers <a
    883 href="https://www2.unb.ca/gge/Resources/gpsworld.november99.pdf">McCarthy
    884 and Klepczynski's 1999 proposal to discontinue leap seconds</a>,
    885 discussed further in
    886 <a href="https://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf">The
    887 leap second: its history and possible future</a>.
    888 <a href="https://www.ucolick.org/~sla/leapsecs/"><abbr>UTC</abbr>
    889 might be redefined
    890 without Leap Seconds</a> gives pointers on this
    891 contentious issue, which was active until 2015 and could become active
    892 again.</li>
    893 </ul>
    894 <h2 id="notation">Time notation</h2>
    895 <ul>
    896 <li>The <a id="CLDR" href="http://cldr.unicode.org">Unicode Common Locale Data
    897 Repository (<abbr>CLDR</abbr>) Project</a> has localizations for time
    898 zone names, abbreviations, identifiers, and formats. For example, it
    899 contains French translations for "Eastern European Summer Time",
    900 "<abbr title="Eastern European Summer Time">EEST</abbr>", and
    901 "Bucharest". Its
    902 <a href="https://unicode.org/cldr/charts/latest/by_type/">by-type
    903 charts</a> show these values for many locales. Data values are available in
    904 both <abbr title="Locale Data Markup Language">LDML</abbr>
    905 (an <abbr>XML</abbr> format) and <abbr>JSON</abbr>.
    906 <li>
    907 <a href="https://www.cl.cam.ac.uk/~mgk25/iso-time.html">A summary of
    908 the international standard date and time notation</a> is a good
    909 summary of
    910 <a
    911 href="https://www.iso.org/standard/40874.html"><em><abbr>ISO</abbr>
    912 8601:2004 &ndash; Data elements and interchange formats &ndash; Information
    913 interchange &ndash; Representation of dates and times</em></a>.</li>
    914 <li>
    915 <a href="https://www.w3.org/TR/xmlschema-2/#dateTime"><abbr>XML</abbr>
    916 Schema: Datatypes &ndash; dateTime</a> specifies a format inspired by
    917 <abbr>ISO</abbr> 8601 that is in common use in <abbr>XML</abbr> data.</li>
    918 <li><a href="https://tools.ietf.org/html/rfc5322#section-3.3">&sect;3.3 of
    919 Internet Message Format</a> (Internet <abbr>RFC</abbr> 5322)
    920 specifies the time notation used in email and <a
    921 href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"><abbr>HTTP</abbr></a>
    922 headers.</li>
    923 <li>
    924 <a href="https://tools.ietf.org/html/rfc3339">Date and Time
    925 on the Internet: Timestamps</a> (Internet <abbr>RFC</abbr> 3339)
    926 specifies an <abbr>ISO</abbr> 8601
    927 profile for use in new Internet
    928 protocols.</li>
    929 <li>
    930 <a href="https://www.hackcraft.net/web/datetime/">Date &amp; Time
    931 Formats on the Web</a> surveys web- and Internet-oriented date and time
    932 formats.</li>
    933 <li>Alphabetic time zone abbreviations should not be used as unique
    934 identifiers for <abbr>UT</abbr> offsets as they are ambiguous in
    935 practice. For example, in English-speaking North America
    936 "<abbr>CST</abbr>" denotes 6 hours behind <abbr>UT</abbr>,
    937 but in China it denotes 8 hours ahead of <abbr>UT</abbr>,
    938 and French-speaking North Americans prefer
    939 "<abbr title="Heure Normale du Centre">HNC</abbr>" to
    940 "<abbr>CST</abbr>". The <code><abbr>tz</abbr></code>
    941 database contains English abbreviations for many timestamps;
    942 unfortunately some of these abbreviations were merely the database maintainers'
    943 inventions, and these have been removed when possible.</li>
    944 <li>Numeric time zone abbreviations typically count hours east of
    945 <abbr>UT</abbr>, e.g., +09 for Japan and
    946 &minus;10 for Hawaii. However, the <abbr>POSIX</abbr>
    947 <code><abbr>TZ</abbr></code> environment variable uses the opposite convention.
    948 For example, one might use <code><abbr>TZ</abbr>="<abbr
    949 title="Japan Standard Time">JST</abbr>-9"</code> and
    950 <code><abbr>TZ</abbr>="<abbr title="Hawaii Standard Time">HST</abbr>10"</code>
    951 for Japan and Hawaii, respectively. If the
    952 <code><abbr>tz</abbr></code> database is available, it is usually better to use
    953 settings like <code><abbr>TZ</abbr>="Asia/Tokyo"</code> and
    954 <code><abbr>TZ</abbr>="Pacific/Honolulu"</code> instead, as this should avoid
    955 confusion, handle old timestamps better, and insulate you better from
    956 any future changes to the rules. One should never set
    957 <abbr>POSIX</abbr> <code><abbr>TZ</abbr></code> to a value like
    958 <code>"GMT-9"</code>, though, since this would incorrectly imply that
    959 local time is nine hours ahead of <abbr>UT</abbr> and the time zone
    960 is called "<abbr>GMT</abbr>".</li>
    961 </ul>
    962 <h2 id="see-also">See also</h2>
    963 <ul>
    964 <li><a href="theory.html">Theory and pragmatics of the tz code and data</a></li>
    965 <li><a href="tz-art.html">Time and the Arts</a></li>
    966 </ul>
    967 <hr>
    968 <address>
    969 This web page is in the public domain, so clarified as of
    970 2009-05-17 by Arthur David Olson.
    971 <br>
    972 Please send corrections to this web page to the
    973 <a href="mailto:tz (a] iana.org">time zone mailing list</a>.
    974 </address>
    975 </body>
    976 </html>
    977