Module Name: src Committed By: christos Date: Fri Sep 16 17:12:06 UTC 2016
Modified Files: src/lib/libc/time: Makefile NEWS Theory tz-art.htm tz-link.htm zic.c Added Files: src/lib/libc/time: tz-how-to.html Log Message: welcome to tzcond-2016f To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/lib/libc/time/Makefile cvs rdiff -u -r1.15 -r1.16 src/lib/libc/time/NEWS cvs rdiff -u -r1.19 -r1.20 src/lib/libc/time/Theory cvs rdiff -u -r1.12 -r1.13 src/lib/libc/time/tz-art.htm cvs rdiff -u -r0 -r1.1 src/lib/libc/time/tz-how-to.html cvs rdiff -u -r1.25 -r1.26 src/lib/libc/time/tz-link.htm cvs rdiff -u -r1.58 -r1.59 src/lib/libc/time/zic.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/time/Makefile diff -u src/lib/libc/time/Makefile:1.32 src/lib/libc/time/Makefile:1.33 --- src/lib/libc/time/Makefile:1.32 Tue Mar 15 11:16:01 2016 +++ src/lib/libc/time/Makefile Fri Sep 16 13:12:06 2016 @@ -5,7 +5,7 @@ PACKAGE= tzcode # Version numbers of the code and data distributions. -VERSION= 2016b +VERSION= 2016f # Email address for bug reports. BUGEMAIL= t...@iana.org Index: src/lib/libc/time/NEWS diff -u src/lib/libc/time/NEWS:1.15 src/lib/libc/time/NEWS:1.16 --- src/lib/libc/time/NEWS:1.15 Tue Mar 15 11:16:01 2016 +++ src/lib/libc/time/NEWS Fri Sep 16 13:12:06 2016 @@ -1,7 +1,136 @@ News for the tz database +Release 2016f - 2016-07-05 16:26:51 +0200 + + Changes affecting future time stamps + + The Egyptian government changed its mind on short notice, and + Africa/Cairo will not introduce DST starting 2016-07-07 after all. + (Thanks to Mina Samuel.) + + Asia/Novosibirsk switches from +06 to +07 on 2016-07-24 at 02:00. + (Thanks to Stepan Golosunov.) + + Changes to past and future time stamps + + Asia/Novokuznetsk and Asia/Novosibirsk now use numeric time zone + abbreviations instead of invented ones. + + Changes affecting past time stamps + + Europe/Minsk's 1992-03-29 spring-forward transition was at 02:00 not 00:00. + (Thanks to Stepan Golosunov.) + + +Release 2016e - 2016-06-14 08:46:16 -0700 + + Changes affecting future time stamps + + Africa/Cairo observes DST in 2016 from July 7 to the end of October. + Guess October 27 and 24:00 transitions. (Thanks to Steffen Thorsen.) + For future years, guess April's last Thursday to October's last + Thursday except for Ramadan. + + Changes affecting past time stamps + + Locations while uninhabited now use '-00', not 'zzz', as a + placeholder time zone abbreviation. This is inspired by Internet + RFC 3339 and is more consistent with numeric time zone + abbreviations already used elsewhere. The change affects several + arctic and antarctic locations, e.g., America/Cambridge_Bay before + 1920 and Antarctica/Troll before 2005. + + Asia/Baku's 1992-09-27 transition from +04 (DST) to +04 (non-DST) was + at 03:00, not 23:00 the previous day. (Thanks to Michael Deckers.) + + Changes to code + + zic now outputs a dummy transition at time 2**31 - 1 in zones + whose POSIX-style TZ strings contain a '<'. This mostly works + around Qt bug 53071 <https://bugreports.qt.io/browse/QTBUG-53071>. + (Thanks to Zhanibek Adilbekov for reporting the Qt bug.) + + Changes affecting documentation and commentary + + tz-link.htm says why governments should give plenty of notice for + time zone or DST changes, and refers to Matt Johnson's blog post. + + tz-link.htm mentions Tzdata for Elixir. (Thanks to Matt Johnson.) + + +Release 2016d - 2016-04-17 22:50:29 -0700 + + Changes affecting future time stamps + + America/Caracas switches from -0430 to -04 on 2016-05-01 at 02:30. + (Thanks to Alexander Krivenyshev for the heads-up.) + + Asia/Magadan switches from +10 to +11 on 2016-04-24 at 02:00. + (Thanks to Alexander Krivenyshev and Matt Johnson.) + + New zone Asia/Tomsk, split off from Asia/Novosibirsk. It covers + Tomsk Oblast, Russia, which switches from +06 to +07 on 2016-05-29 + at 02:00. (Thanks to Stepan Golosunov.) + + Changes affecting past time stamps + + New zone Europe/Kirov, split off from Europe/Volgograd. It covers + Kirov Oblast, Russia, which switched from +04/+05 to +03/+04 on + 1989-03-26 at 02:00, roughly a year after Europe/Volgograd made + the same change. (Thanks to Stepan Golosunov.) + + Russia and nearby locations had daylight-saving transitions on + 1992-03-29 at 02:00 and 1992-09-27 at 03:00, instead of on + 1992-03-28 at 23:00 and 1992-09-26 at 23:00. (Thanks to Stepan + Golosunov.) + + Many corrections to historical time in Kazakhstan from 1991 + through 2005. (Thanks to Stepan Golosunov.) Replace Kazakhstan's + invented time zone abbreviations with numeric abbreviations. + + Changes to commentary + + Mention Internet RFCs 7808 (TZDIST) and 7809 (CalDAV time zone references). + + +Release 2016c - 2016-03-23 00:51:27 -0700 + + Changes affecting future time stamps + + Azerbaijan no longer observes DST. (Thanks to Steffen Thorsen.) + + Chile reverts from permanent to seasonal DST. (Thanks to Juan + Correa for the heads-up, and to Tim Parenti for corrections.) + Guess that future transitions are August's and May's second + Saturdays at 24:00 mainland time. Also, call the period from + 2014-09-07 through 2016-05-14 daylight saving time instead of + standard time, as that seems more appropriate now. + + Changes affecting past time stamps + + Europe/Kaliningrad and Europe/Vilnius changed from +03/+04 to + +02/+03 on 1989-03-26, not 1991-03-31. Europe/Volgograd changed + from +04/+05 to +03/+04 on 1988-03-27, not 1989-03-26. + (Thanks to Stepan Golosunov.) + + Changes to commentary + + Several updates and URLs for historical and proposed Russian changes. + (Thanks to Stepan Golosunov, Matt Johnson, and Alexander Krivenyshev.) + + Release 2016b - 2016-03-12 17:30:14 -0800 + Compatibility note + + Starting with release 2016b, some data entries cause zic implementations + derived from tz releases 2005j through 2015e to issue warnings like + "time zone abbreviation differs from POSIX standard (+03)". + These warnings should not otherwise affect zic's output and can safely be + ignored on today's platforms, as the warnings refer to a restriction in + POSIX.1-1988 that was removed in POSIX.1-2001. One way to suppress the + warnings is to upgrade to zic derived from tz releases 2015f and later. + Changes affecting future time stamps New zones Europe/Astrakhan and Europe/Ulyanovsk for Astrakhan and Index: src/lib/libc/time/Theory diff -u src/lib/libc/time/Theory:1.19 src/lib/libc/time/Theory:1.20 --- src/lib/libc/time/Theory:1.19 Tue Mar 15 11:16:01 2016 +++ src/lib/libc/time/Theory Fri Sep 16 13:12:06 2016 @@ -227,9 +227,10 @@ in decreasing order of importance: name identifying each zone and append 'T', 'ST', etc. as before; e.g. 'VLAST' for VLAdivostok Summer Time. - Use UT (with time zone abbreviation 'zzz') for locations while - uninhabited. The 'zzz' mnemonic is that these locations are, - in some sense, asleep. + Use UT (with time zone abbreviation '-00') for locations while + uninhabited. The leading '-' is a flag that the time + zone is in some sense undefined; this notation is + derived from Internet RFC 3339. Application writers should note that these abbreviations are ambiguous in practice: e.g. 'CST' has a different meaning in China than Index: src/lib/libc/time/tz-art.htm diff -u src/lib/libc/time/tz-art.htm:1.12 src/lib/libc/time/tz-art.htm:1.13 --- src/lib/libc/time/tz-art.htm:1.12 Tue Mar 15 11:16:01 2016 +++ src/lib/libc/time/tz-art.htm Fri Sep 16 13:12:06 2016 @@ -8,16 +8,23 @@ PUBLIC "-//W3C//DTD HTML 4.01//EN" </head> <body> <h1>Time and the Arts</h1> -<p> -This file is in the public domain, so clarified as of -2009-05-17 by Arthur David Olson. -</p> -<p> -Please send corrections to this web page to the -<a href="mailto:t...@iana.org">time zone mailing list</a>.</p> -<p> -See also <a href="tz-link.htm">Sources for Time Zone and Daylight Saving Time Data</a>.</p> -<hr> +<h2>Documentaries</h2> +<ul> +<li> +"<a href="https://www.youtube.com/watch?v=84aWtseb2-4">Daylight +Saving Time Explained</a>" (2011; 6:39) lightly covers daylight saving +time's theory, history, pros and cons. Among other things, it explains +Arizona's daylight-saving enclaves quite well.</li> +<li> +"<a href="https://www.youtube.com/watch?v=-5wpm-gesOY">The Problem +with Time & Timezones – Computerphile</a>" (2013; 10:12) delves +into problems that programmers have with timekeeping.</li> +<li> +"About Time" (1962; 53 minutes) is part of the the +Bell Science extravaganza, with Frank Baxter, Richard Deacon, and Les Tremayne. +(<a href="http://www.imdb.com/title/tt0154110/">IMDb entry</a>.)</li> +</ul> +<h2>Music</h2> <p> Data on recordings of "Save That Time," Russ Long, Serrob Publishing, BMI:</p> <table> @@ -246,8 +253,80 @@ Supernaw.</td></tr> <tr><td><a href="http://www.allmusic.com/album/youre-getting-better-the-word-jazz-dot-masters-mw0000736197">AMG Rating</a></td><td>4.5 stars</td></tr> <tr><td>Notes</td><td>Includes the piece "What Time Is It" ("He knew what time it was everywhere...that counted").</td></tr> -<tr><td> </td></tr> +</table> + +<h2>TV episodes</h2> +<ul> +<li> +An episode of <em>The Adventures of Superman</em> entitled "The Mysterious +Cube," first aired 1958-02-24, had Superman convincing the controllers +of the Arlington Time Signal to broadcast ahead of actual time; +doing so got a crook trying to be declared dead to +emerge a bit too early from the titular enclosure. +</li> +<li> +The 1960s ITC television series <em>The Prisoner</em> included an episode +entitled "The Chimes of Big Ben" in which our protagonist tumbled to +the fraudulent nature of a Poland-to-England escape upon hearing "Big +Ben" chiming on Polish local time. +</li> +<li> +The series <em>Seinfeld</em> included an episode entitled "The Susie," first +broadcast 1997-02-13, in which Kramer decides that daylight saving time +isn't coming fast enough, so he sets his watch ahead an hour. +</li> +<li> +The "20 Hours in America" episode of <em>The West Wing</em>, +first aired 2002-09-25, +saw White House staffers stranded in Indiana; they thought they had time to +catch Air Force One but were done in by intra-Indiana local time changes. +</li> +<li> +"In what time zone would you find New York City?" was a $200 question on +the 1999-11-13 United States airing of <em>Who Wants to Be a Millionaire?</em>, +and "In 1883, what industry led the movement to divide the U.S. into four time +zones?" was a $32,000 question on the 2001-05-23 United States airing of +the same show. At this rate, the million-dollar time-zone +question should have been asked 2002-06-04. +</li> +<li> +A private jet's mid-flight change of time zones distorts Alison Dubois' +premonition in the "We Had a Dream" episode of <em>Medium</em> +(originally aired 2007-02-28). +</li> +<li> +In the <em>30 Rock</em> episode "Anna Howard Shaw Day" +(first broadcast 2010-02-11), +Jack Donaghy's date realizes that a Geneva-to-New-York business phone call +received in the evening must be fake given the difference in local times. +</li> +<li> +In the "Run by the Monkeys" episode of <em>Da Vinci's Inquest</em> +(first broadcast 2002-11-17), +a witness in a five-year-old fire case realizes they may not have set +their clock back when daylight saving ended on the day of the fire, +introducing the possibility of an hour when arson might have occurred. +</li> +<li> +In "The Todd Couple" episode of <em>Outsourced</em> (first aired 2011-02-10), +Manmeet sets up Valentine's Day teledates for 6:00 and 9:00pm; +since one is with a New Yorker and the other with a San Franciscan, +hilarity ensues. +(Never mind that this should be 7:30am in Mumbai, yet for some reason the show +proceeds as though it's also mid-evening there.) +</li> +<li> +In the "14 Days to Go"/"T Minus..." episode of +<em>You, Me and the Apocalypse</em> +(first aired 2015-11-11 in the UK, 2016-03-10 in the US), +the success of a mission to deal with a comet +hinges on whether or not Russia observes daylight saving time. +(In the US, the episode first aired in the week before the switch to DST.) +</li> +</ul> + +<table> <tr><td>TV episode title</td><td>The Lost Hour</td> <tr><td>TV series</td><td><em>Eerie, Indiana</em></td> <tr><td>TV episode number</td><td>10</td> @@ -281,8 +360,11 @@ savings days. Lousy farmers."</td></tr> <tr><td>Air date</td><td>2016-01-17</td></tr> <tr><td>Notes</td><td>The applicability of a contract hinges on the time zone associated with a video time stamp.</td></tr> -<tr><td> </td></tr> +</table> + +<h2>Books, plays, and magazines</h2> +<table> <tr><td>Artist</td><td>Jules Verne</td></tr> <tr><td>Book</td><td><em>Around the World in Eighty Days</em> (<em>Le tour du monde en quatre-vingts jours</em>)</td></tr> @@ -324,48 +406,10 @@ O'Clock, Eastern Wartime</em></a></td></ <tr><td>Notes</td><td> Mystery, history, daylight saving time, and old-time radio. </td></tr> -<tr><td> </td></tr> -<tr><td>Film</td><td><em>About Time</em></td></tr> -<tr><td>Copyright Date</td><td>1962</td></tr> -<tr><td>Notes</td><td>The Bell Science extravaganza, with Frank Baxter, -Richard Deacon, and Les Tremayne. -<a href="http://www.imdb.com/title/tt0154110/">Information</a> -is available at IMDb.</td></tr> </table> <hr> <ul> <li> -An episode of <em>The Adventures of Superman</em> entitled "The Mysterious -Cube," first aired 1958-02-24, had Superman convincing the controllers -of the Arlington Time Signal to broadcast ahead of actual time; -doing so got a crook trying to be declared dead to -emerge a bit too early from the titular enclosure. -</li> -<li> -The 1960s ITC television series <em>The Prisoner</em> included an episode -entitled "The Chimes of Big Ben" in which our protagonist tumbled to -the fraudulent nature of a Poland-to-England escape upon hearing "Big -Ben" chiming on Polish local time. -</li> -<li> -The series <em>Seinfeld</em> included an episode entitled "The Susie," first -broadcast 1997-02-13, in which Kramer decides that daylight saving time -isn't coming fast enough, so he sets his watch ahead an hour. -</li> -<li> -The syndicated comic strip <em>Dilbert</em> featured an -<a href='http://dilbert.com/strip/1998-03-14'>all-too-rare example of -time zone humor</a> on 1998-03-14. -</li> -<li> -The webcomic <em>xkcd</em> has the strip -"<a href='https://xkcd.com/673/'>The Sun</a>" (2009-12-09) and the panels -"<a href='https://xkcd.com/1017/'>Backward in Time</a>" (2012-02-14), -"<a href='https://xkcd.com/1061/'>EST</a>" (2012-05-28), and -"<a href='https://xkcd.com/1335/'>Now</a>" (2014-02-26). -The related book <em>What If?</em> has an entry -"<a href='https://what-if.xkcd.com/26/'>Leap Seconds</a>" (2012-12-31). -<li> Surrealist artist Guy Billout's work "Date Line" appeared on page 103 of the 1999-11 <em>Atlantic Monthly</em>. </li> @@ -374,31 +418,9 @@ of the 1999-11 <em>Atlantic Monthly</em> magazine's 2002-11-11 issue; among other things, it proposed year-round DST as a way of lessening wintertime despair. </li> -<li> -The "20 Hours in America" episode of <em>The West Wing</em>, -first aired 2002-09-25, -saw White House staffers stranded in Indiana; they thought they had time to -catch Air Force One but were done in by intra-Indiana local time changes. -</li> -<li> -"In what time zone would you find New York City?" was a $200 question on -the 1999-11-13 United States airing of <em>Who Wants to Be a Millionaire?</em>, -and "In 1883, what industry led the movement to divide the U.S. into four time -zones?" was a $32,000 question on the 2001-05-23 United States airing of -the same show. At this rate, the million-dollar time-zone -question should have been asked 2002-06-04. -</li> -<li> -A private jet's mid-flight change of time zones distorts Alison Dubois' -premonition in the "We Had a Dream" episode of <em>Medium</em> -(originally aired 2007-02-28). -</li> -<li> -In the <em>30 Rock</em> episode "Anna Howard Shaw Day" -(first broadcast 2010-02-11), -Jack Donaghy's date realizes that a Geneva-to-New-York business phone call -received in the evening must be fake given the difference in local times. -</li> +</ul> +<h2>Movies</h2> +<ul> <li> In the 1946 movie <em>A Matter of Life and Death</em> (U.S. title <em>Stairway to Heaven</em>) @@ -436,30 +458,38 @@ http://us.imdb.com/title/tt0137494/ </a>. (Mark Brader, 2009-10-02) </li> <li> -In the "Run by the Monkeys" episode of <em>Da Vinci's Inquest</em> -(first broadcast 2002-11-17), -a witness in a five-year-old fire case realizes they may not have set -their clock back when daylight saving ended on the day of the fire, -introducing the possibility of an hour when arson might have occurred. +One mustn't forget the +<a href="https://www.youtube.com/watch?v=k4EUTMPuvHo">trailer</a> +(2014; 2:23) for the movie <em>Daylight Saving</em>. </li> +</ul> +<h2>Comics</h2> +<ul> <li> -In "The Todd Couple" episode of <em>Outsourced</em> (first aired 2011-02-10), -Manmeet sets up Valentine's Day teledates for 6:00 and 9:00pm; -since one is with a New Yorker and the other with a San Franciscan, -hilarity ensues. -(Never mind that this should be 7:30am in Mumbai, yet for some reason the show -proceeds as though it's also mid-evening there.) +The webcomic <em>xkcd</em> has the strip +"<a href='http://xkcd.com/673/'>The Sun</a>" (2009-12-09) and the panels +"<a href='http://xkcd.com/1017/'>Backward in Time</a>" (2012-02-14), +"<a href='http://xkcd.com/1061/'>EST</a>" (2012-05-28), and +"<a href='http://xkcd.com/1335/'>Now</a>" (2014-02-26), and +"<a href='http://xkcd.com/1655/'>Doomsday Clock</a>" (2016-03-14). +The related book <em>What If?</em> has an entry +"<a href='http://what-if.xkcd.com/26/'>Leap Seconds</a>" (2012-12-31). </li> <li> -In the "14 Days to Go"/"T Minus..." episode of -<em>You, Me and the Apocalypse</em> -(first aired 2015-11-11 in the UK, 2016-03-10 in the US), -the success of a mission to deal with a comet -hinges on whether or not Russia observes daylight saving time. -(In the US, the episode first aired in the week before the switch to DST.) +The syndicated comic strip <em>Dilbert</em> featured an +<a href='http://dilbert.com/strip/1998-03-14'>example of +time zone humor</a> on 1998-03-14. +</li> +<li> +Peppermint Patty: "What if the world comes to an end tonight, Marcie?" +<br> +Marcie: "I promise there'll be a tomorrow, sir ... in fact, +it's already tomorrow in Australia!" +<br> +(Charles M. Schulz, <a href='http://www.gocomics.com/peanuts/1980/06/13'><em>Peanuts</em>, 1980-06-13</a>) </li> </ul> -<hr> +<h2>Jokes</h2> <ul> <li> "We've been using the five-cent nickel in this country since 1492. @@ -468,12 +498,12 @@ Now that's pretty near 100 years, daylig as noted by Will Fitzgerald) </li> <li> -Brady: "...[Bishop Usher] determined that the Lord began the Creation -on the 23rd of October in the Year 4004 B.C. at – uh, at 9 A.M.!" +BRADY. ...[Bishop Usher] determined that the Lord began the Creation +on the 23rd of October in the Year 4,004 B.C. at – uh, 9 A.M.! <br> -Drummond: "That Eastern Standard Time? (Laughter) Or Rocky Mountain -Time? (More laughter) It wasn't daylight-saving time, was it? Because -the Lord didn't make the sun until the fourth day!" +DRUMMOND. That Eastern Standard Time? (<em>Laughter.</em>) Or Rocky Mountain +Time? (<em>More laughter.</em>) It wasn't daylight-saving time, was it? Because +the Lord didn't make the sun until the fourth day! <br> (From the play <em>Inherit the Wind</em> by Jerome Lawrence and Robert E. Lee, filmed in 1960 with Spencer Tracy as Drummond and Fredric March as @@ -526,14 +556,19 @@ midnight." (Conan O'Brien on the 2010-11 but maybe in your time zone I haven't finished yet. So stay tuned!" (Goldie Hawn, <em>Rowan & Martin's Laugh-In</em> No. 65, 1970-03-09) </li> -<li> -Peppermint Patty: "What if the world comes to an end tonight, Marcie?" -<br> -Marcie: "I promise there'll be a tomorrow, sir ... in fact, -it's already tomorrow in Australia!" -<br> -(Charles M. Schulz, <a href='http://www.gocomics.com/peanuts/1980/06/13'><em>Peanuts</em>, 1980-06-13</a>) -</li> </ul> +<h2>See also</h2> +<ul> +<li><a href="tz-link.htm">Sources for Time Zone and Daylight Saving +Time Data</a></li> +</ul> +<hr> +<address> +This web page is in the public domain, so clarified as of +2009-05-17 by Arthur David Olson. +<br> +Please send corrections to this web page to the +<a href="mailto:t...@iana.org">time zone mailing list</a>. +</address> </body> </html> Index: src/lib/libc/time/tz-link.htm diff -u src/lib/libc/time/tz-link.htm:1.25 src/lib/libc/time/tz-link.htm:1.26 --- src/lib/libc/time/tz-link.htm:1.25 Tue Mar 15 11:16:01 2016 +++ src/lib/libc/time/tz-link.htm Fri Sep 16 13:12:06 2016 @@ -10,7 +10,7 @@ content="Sources for time zone and daylight saving time data"> <meta name="DC.Creator" content="Eggert, Paul"> <meta name="DC.Contributor" content="Olson, Arthur David"> -<meta name="DC.Date" content="2016-02-29"> +<meta name="DC.Date" content="2016-06-14"> <meta name="DC.Description" content="Sources of information about time zones and daylight saving time"> <meta name="DC.Identifier" @@ -20,6 +20,13 @@ </head> <body> <h1>Sources for time zone and daylight saving time data</h1> +<p> +Time zone and daylight saving rules are controlled by individual +governments. They are sometimes changed with little notice, and their +histories and planned futures are often recorded only fitfully. Here +is a summary of attempts to organize and record relevant data in this +area. +</p> <h2>The <code><abbr title="time zone">tz</abbr></code> database</h2> <p> The <a href="https://en.wikipedia.org/wiki/Public_domain">public-domain</a> @@ -39,13 +46,14 @@ including <abbr title="GNU's Not Unix">GNU</abbr> C Library</a> (used in <a href="https://en.wikipedia.org/wiki/Linux"><abbr>GNU</abbr>/Linux</a>), -<a href="http://www.android.com">Android</a>, -<a href="https://developer.mozilla.org/en-US/Firefox_OS">Firefox +<a href="https://www.android.com">Android</a>, +<a href="https://developer.mozilla.org/en-US/docs/Mozilla/B2G_OS">B2G <abbr title="Operating System">OS</abbr></a>, <a href="https://www.freebsd.org">Free<abbr title="Berkeley Software Distribution">BSD</abbr></a>, <a href="http://netbsd.org">Net<abbr>BSD</abbr></a>, <a href="http://www.openbsd.org">Open<abbr>BSD</abbr></a>, +<a href="http://www.chromium.org/chromium-os">Chromium OS</a>, <a href="https://cygwin.com">Cygwin</a>, <a href="http://www.delorie.com/djgpp/"><abbr title="DJ's GNU Programming Platform">DJGPP</abbr></a>, @@ -58,7 +66,7 @@ title="Advanced Interactive eXecutive">A <a href="http://www.apple.com/ios/"><abbr title="iPhone OS">iOS</abbr></a>, <a href="http://windows.microsoft.com">Microsoft Windows</a>, -<a href="http://www8.hp.com/us/en/products/servers/openvms/overview.html">Open<abbr +<a href="http://www.hp.com/go/openvms/">Open<abbr title="Virtual Memory System">VMS</abbr></a>, <a href="https://www.oracle.com/database/index.html">Oracle Database</a>, <a href="http://oracle.com/solaris">Oracle Solaris</a>, and @@ -140,8 +148,10 @@ The code lets you compile the <code><abb machine-readable binary files, one for each location. It also lets you read a <code><abbr>tz</abbr></code> binary file and interpret time stamps for that location.</p> +<h2>Changes to the <code><abbr>tz</abbr></code> database</h2> <p> -The files are by no means authoritative. If you find errors, please +The <code><abbr>tz</abbr></code> code and data +are by no means authoritative. If you find errors, please send changes to the <a href="mailto:t...@iana.org">time zone mailing list</a>. You can also <a href="http://news.gmane.org/gmane.comp.time.tz">browse recent @@ -149,28 +159,15 @@ messages</a> sent to the mailing list, < href="https://mm.icann.org/mailman/listinfo/tz">subscribe</a> to it, and browse the <a href="http://mm.icann.org/pipermail/tz/">archive of old -messages</a>. For further information about updates, please see -<a href="http://tools.ietf.org/html/rfc6557">Procedures for -Maintaining the Time Zone Database</a> (Internet <abbr -title="Request For Comments">RFC</abbr> 6557).</p> +messages</a>.</p> <p> -The Web has several other sources for time zone and daylight saving time data. -Here are some links that may be of interest. +If your government plans to change its time zone boundaries or +daylight saving rules, let the mailing list know well in advance. With +less than a year's notice there is a good chance that some +computer-based clocks will operate incorrectly after the change, due +to delays in propagating updates to software and data. The shorter +the notice, the more likely clock problems will arise. </p> -<h2>Commentary on the <code><abbr>tz</abbr></code> database</h2> -<ul> -<li>The article -<a href="https://en.wikipedia.org/wiki/Tz_database">tz database</a> is -an encyclopedic summary.</li> -<li><a href="tz-how-to.html">How to Read the -tz Database Source Files</a> explains the <code><abbr>tz</abbr></code> -database format.</li> -<li><a -href="http://blog.jonudell.net/2009/10/23/a-literary-appreciation-of-the-olsonzoneinfotz-database/">A -literary appreciation of the Olson/Zoneinfo/tz database</a> comments on the -database's style.</li> -</ul> -<h2>Editing <code><abbr>tz</abbr></code> database source files</h2> <p>Sources for the <code><abbr>tz</abbr></code> database are <a href="https://en.wikipedia.org/wiki/UTF-8"><abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr></a> @@ -180,14 +177,37 @@ title="linefeed">LF</abbr></a>, which can be modified by common text editors such as <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>, <a href="https://wiki.gnome.org/Apps/Gedit">gedit</a>, and -<a href="http://www.vim.org/">vim</a>. One +<a href="http://www.vim.org">vim</a>. One editor has a package to simplify editing further:</p> <ul> <li><a href="https://packagecontrol.io/packages/zoneinfo">Sublime -zoneinfo</a> is a <a href="http://www.sublimetext.com/">Sublime +zoneinfo</a> is a <a href="http://www.sublimetext.com">Sublime Text</a> package for syntax highlighting <code><abbr>tz</abbr></code> source files.</li> </ul> +<p> +For further information about updates, please see +<a href="https://tools.ietf.org/html/rfc6557">Procedures for +Maintaining the Time Zone Database</a> (Internet <abbr +title="Request For Comments">RFC</abbr> 6557).</p> +<h2>Commentary on the <code><abbr>tz</abbr></code> database</h2> +<ul> +<li>The article +<a href="https://en.wikipedia.org/wiki/Tz_database">tz database</a> is +an encyclopedic summary.</li> +<li><a href="tz-how-to.html">How to Read the +tz Database Source Files</a> explains the <code><abbr>tz</abbr></code> +database format.</li> +<li><a +href="http://codeofmatt.com/2016/04/23/on-the-timing-of-time-zone-changes/">On +the Timing of Time Zone Changes</a> gives examples of problems caused +by inadequate notice by governments of time zone and daylight saving +rule changes.</li> +<li><a +href="http://blog.jonudell.net/2009/10/23/a-literary-appreciation-of-the-olsonzoneinfotz-database/">A +literary appreciation of the Olson/Zoneinfo/tz database</a> comments on the +database's style.</li> +</ul> <h2>Web sites using recent versions of the <code><abbr>tz</abbr></code> database</h2> <p> These are listed roughly in ascending order of complexity and fanciness. @@ -195,7 +215,7 @@ These are listed roughly in ascending or <ul> <li><a href="http://time.is">Time.is</a> shows locations' time and zones in a simple format.</li> -<li><a href="https://www.timejones.com/">TimeJones.com</a> is a simple +<li><a href="https://www.timejones.com">TimeJones.com</a> is a simple time zone converter.</li> <li><a href="http://twiki.org/cgi-bin/xtra/tzdatepick.html">Date and Time Gateway</a> @@ -214,36 +234,36 @@ Worldwide</a> lets you sort zone names a calculates the current time difference between locations.</li> <li><a href="http://www.wx-now.com">Weather Now</a> lists the weather too.</li> <li><a href="http://www.thetimenow.com">The Time Now</a> also lists weather.</li> -<li><a href="http://worldtime.io">worldtime.io</a> +<li><a href="https://worldtime.io">worldtime.io</a> also contains data about time zone boundaries; it supports queries via place names and shows location maps.</li> </ul> <h2>Network protocols for <code><abbr>tz</abbr></code> data</h2> <ul> <li>The <a href="http://www.ietf.org">Internet Engineering Task Force</a>'s -<a href="http://datatracker.ietf.org/wg/tzdist/charter/">Time Zone Data -Distribution Service (tzdist) working group</a> is developing a scalable -protocol for distributing time zone data to clients. It has generated a -a <a href="http://datatracker.ietf.org/doc/draft-ietf-tzdist-service/">draft -protocol for transferring time zone data</a> and a <a -href="http://datatracker.ietf.org/doc/draft-ietf-tzdist-caldav-timezone-ref/">draft -protocol for transferring time zone data by reference</a>. This work is based +<a href="https://datatracker.ietf.org/wg/tzdist/charter/">Time Zone Data +Distribution Service (tzdist) working group</a> defined <a +href="https://tools.ietf.org/html/rfc7808">TZDIST</a> +(Internet <abbr>RFC</abbr> 7808), a time zone data distribution service, +along with a <a href="https://tools.ietf.org/html/rfc7809">calendar access +protocol for transferring time zone data by reference</a> +(Internet <abbr>RFC</abbr> 7809). This work was based on the iCalendar and CalConnect efforts described below.</li> -<li>The <a href="http://tools.ietf.org/html/rfc5545"> +<li>The <a href="https://tools.ietf.org/html/rfc5545"> Internet Calendaring and Scheduling Core Object Specification (iCalendar)</a> (Internet <abbr>RFC</abbr> 5445) covers time zone data; see its VTIMEZONE calendar component. The iCalendar format requires specialized parsers and generators; a -variant <a href="http://tools.ietf.org/html/rfc6321">xCal</a> +variant <a href="https://tools.ietf.org/html/rfc6321">xCal</a> (Internet <abbr>RFC</abbr> 6321) uses <a href="http://www.w3.org/XML/"><abbr title="Extensible Markup Language">XML</abbr></a> format, and a variant -<a href="http://tools.ietf.org/html/rfc7265">jCal</a> +<a href="https://tools.ietf.org/html/rfc7265">jCal</a> (Internet <abbr>RFC</abbr> 7265) uses <a href="http://www.json.org"><abbr title="JavaScript Object Notation">JSON</abbr></a> format. -<a href="http://calconnect.org">CalConnect, The Calendaring and Scheduling +<a href="https://www.calconnect.org">CalConnect, The Calendaring and Scheduling Consortium</a> is promoting further work in this area. <a href="http://calconnect.org/publications/icalendartimezoneproblemsandrecommendationsv1.0.pdf">iCalendar TIMEZONE Problems and Recommendations</a> offers guidelines and @@ -251,7 +271,7 @@ recommendations for the use of VTIMEZONE <li>The <a href="http://calconnect.org/publications/timezoneregistryandservicerecommendationsv1.0.pdf">Timezone Registry and Service Recommendations</a> of CalConnect's -<a href="http://calconnect.org/tc-timezone.shtml">TIMEZONE +<a href="https://www.calconnect.org/about/technical-committees/tc-timezone">TIMEZONE Technical Committee</a> discusses a strategy for defining and deploying a time zone registration process that would establish unique names for each @@ -269,7 +289,7 @@ data</a> converted from <code><abbr>tz</ </ul> <h2>Other <code><abbr>tz</abbr></code> compilers</h2> <ul> -<li><a href="http://sourceforge.net/projects/vzic/">Vzic</a> is a <a +<li><a href="https://sourceforge.net/projects/vzic/">Vzic</a> is a <a href="https://en.wikipedia.org/wiki/C_%28programming_language%29">C</a> program that compiles <code><abbr>tz</abbr></code> source into iCalendar-compatible VTIMEZONE files. @@ -278,21 +298,21 @@ available under the <a href="http://www.gnu.org/copyleft/gpl.html"><abbr>GNU</abbr> General Public License (<abbr title="General Public License">GPL</abbr>)</a>.</li> -<li><a href="http://sourceforge.net/projects/tzical/">tziCal – tz +<li><a href="https://sourceforge.net/projects/tzical/">tziCal – tz database conversion utility</a> is like Vzic, except for the <a -href="https://msdn.microsoft.com/netframework">.NET framework</a> +href="https://www.microsoft.com/net">.NET framework</a> and with a <abbr>BSD</abbr>-style license.</li> <li><a href="http://search.cpan.org/dist/DateTime-TimeZone/">DateTime::TimeZone</a> contains a script <code>parse_olson</code> that compiles -<code><abbr>tz</abbr></code> source into <a href="http://www.perl.org">Perl</a> +<code><abbr>tz</abbr></code> source into <a href="https://www.perl.org">Perl</a> modules. It is part of the Perl <a href="http://datetime.perl.org">DateTime Project</a>, which is freely available under both the <abbr>GPL</abbr> and the Perl Artistic License. DateTime::TimeZone also contains a script <code>tests_from_zdump</code> that generates test cases for each clock transition in the <code><abbr>tz</abbr></code> database.</li> -<li>The <a href="http://howardhinnant.github.io/tz.html">Time Zone +<li>The <a href="https://howardhinnant.github.io/date/tz.html">Time Zone Database Parser</a> is a <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> parser and runtime library. It is freely available under the @@ -308,18 +328,24 @@ and from <abbr title="Common Locale Data into an <abbr>ICU</abbr>-specific format. <abbr>ICU</abbr> is freely available under a <abbr>BSD</abbr>-style license.</li> +<li>The <a href="https://github.com/lau/tzdata">Tzdata</a> package for +the <a href="http://elixir-lang.org">Elixir</a> language downloads +and compiles tz source and exposes <abbr +title="Application Program Interface">API</abbr>s for use. It is +freely available under the <abbr +title="Massachusetts Institute of Technology">MIT</abbr> license.</li> <li>The <a href="http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">TZUpdater tool</a> compiles <code><abbr>tz</abbr></code> source into the format used by Oracle Java.</li> <li><a href="http://www.joda.org/joda-time/">Joda-Time – Java date -and time <abbr title="Application Program Interface">API</abbr></a> -contains a class +and time <abbr>API</abbr></a> contains a class <code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles <code><abbr>tz</abbr></code> source into a Joda-specific binary format. Joda Time is freely available under a <abbr>BSD</abbr>-style license.</li> -<li><a href="http://nodatime.org">Noda Time – Date and time API for -.NET</a> and <a href="http://www.babiej.demon.nl/Tz4Net/main.htm">TZ4Net</a> +<li><a href="http://nodatime.org">Noda Time – Date and +time <abbr>API</abbr> for .NET</a> +and <a href="http://www.babiej.demon.nl/Tz4Net/main.htm">TZ4Net</a> are similar to Joda Time, but for the .NET framework instead of Java. They are freely available under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License</a> @@ -329,8 +355,7 @@ compilers and libraries include: <ul> <li><a href="http://momentjs.com/timezone/">Moment Timezone</a> is a plugin for the <a href="http://momentjs.com">Moment.js</a> date -manipulation library. It is freely available under -the <abbr title="Massachusetts Institute of Technology">MIT</abbr> +manipulation library. It is freely available under the <abbr>MIT</abbr> license.</li> <li><a href="https://github.com/mde/timezone-js">TimezoneJS.Date</a>'s <abbr>API</abbr> is upward compatible with standard JavaScript @@ -408,23 +433,23 @@ in its JavaScript library for time zone are not supported.</li> <li>The <a href="http://hackage.haskell.org/package/timezone-olson">timezone-olson</a> -package contains <a href="http://haskell.org">Haskell</a> code that +package contains <a href="https://www.haskell.org">Haskell</a> code that parses and uses <code><abbr>tz</abbr></code> binary data. It is freely -available under a BSD-style license.</li> +available under a <abbr>BSD</abbr>-style license.</li> </ul> <h2>Other <code><abbr>tz</abbr></code>-based time zone software</h2> <ul> <li><a href="https://foxclocks.org">FoxClocks</a> -is an extension for <a href="http://www.google.com/chrome/">Google +is an extension for <a href="https://www.google.com/chrome/">Google Chrome</a> and for <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Toolkit_API">Mozilla Toolkit</a> applications like <a href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a> and <a href="https://www.mozilla.org/en-US/thunderbird/">Thunderbird</a>. It displays multiple clocks in the application window, and has a mapping -interface to <a href="http://www.google.com/earth/">Google Earth</a>. +interface to <a href="https://www.google.com/earth/">Google Earth</a>. It is freely available under the <abbr>GPL</abbr>.</li> -<li><a href="http://golang.org">Go programming language</a> +<li><a href="https://golang.org">Go programming language</a> implementations contain a copy of a 32-bit subset of a recent <code><abbr>tz</abbr></code> database in a Go-specific format.</li> @@ -440,7 +465,7 @@ data (mentioned below) used by classes such as <a href="https://msdn.microsoft.com/en-us/library/windows/apps/windows.globalization.datetimeformatting.datetimeformatter.aspx"><code>DateTimeFormatter</code></a>. <a -href="http://blogs.msdn.com/b/bclteam/archive/2007/06/07/exploring-windows-time-zones-with-system-timezoneinfo-josh-free.aspx">Exploring +href="https://blogs.msdn.microsoft.com/bclteam/2007/06/07/exploring-windows-time-zones-with-system-timezoneinfo-josh-free/">Exploring Windows Time Zones with <code>System.TimeZoneInfo</code></a> describes the older, proprietary method of Microsoft Windows 2000 and later, which stores time zone data in the @@ -471,7 +496,7 @@ licenses</a> to <code><abbr>tz</abbr></c </ul> <h2>Other time zone databases</h2> <ul> -<li><a href="http://www.astro.com/cgi/aq.cgi">Atlas Query</a> +<li><a href="http://www.astro.com/atlas">Time-zone Atlas</a> is Astrodienst's Web version of Shanks and Pottenger's time zone history atlases published in both <a href="http://astrocom.com/astrology-products/software/acs-atlas-software">computer</a> @@ -533,8 +558,8 @@ sets of <code><abbr>tz</abbr></code> reg <li>The <a href="https://github.com/bradfitz/latlong">latlong package</a> maps geographical coordinates to a <code><abbr>tz</abbr></code> region. It is written in Go and is freely available under the Apache License.</li> -<li><a href="http://derickrethans.nl/what-time-is-it.html">What Time -is It Here?</a> applies <a href="http://www.mongodb.org">MongoDB</a> +<li><a href="https://derickrethans.nl/what-time-is-it.html">What Time +is It Here?</a> applies <a href="https://www.mongodb.com">MongoDB</a> geospatial query operators to shapefiles' data.</li> <li><a href="http://statoids.com/statoids.html">Administrative Divisions of Countries ("Statoids")</a> contains lists of @@ -569,7 +594,7 @@ surveys the evolution of timekeeping.</l <li><a href="http://www.webexhibits.org/daylightsaving/">About Daylight Saving Time – History, rationale, laws & dates</a> is an overall history of <abbr>DST</abbr>.</li> -<li><a href="http://www.w3.org/TR/timezone/">Working with Time Zones</a> +<li><a href="https://www.w3.org/TR/timezone/">Working with Time Zones</a> contains guidelines and best practices for software applications that deal with civil time.</li> <li><a href="http://energy.ca.gov/daylightsaving.html">Saving Time, @@ -669,7 +694,7 @@ Time Protocol</a> (<abbr title="Institute of Electrical and Electronics Engineers">IEEE</abbr> 1588) can achieve submicrosecond clock accuracy on a local area network.</li> <li><a -href="http://tools.ietf.org/html/rfc4833">Timezone +href="https://tools.ietf.org/html/rfc4833">Timezone Options for <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr></a> (Internet <abbr>RFC</abbr> 4833) specifies a <a @@ -714,7 +739,7 @@ dedicated not only to leap seconds but t in general. It covers the state of the art in amateur timekeeping, and how the art has progressed over the past few decades.</li> <li><a -href="http://www.iers.org/IERS/EN/Publications/Bulletins/bulletins.html"><abbr +href="https://www.iers.org/IERS/EN/Publications/Bulletins/bulletins.html"><abbr title="International Earth Rotation and Reference Systems Service">IERS</abbr> Bulletins</a> contains official publications of the International Earth Rotation and Reference Systems Service, which decides @@ -754,17 +779,17 @@ title="International Organization for St 8601:2004 – Data elements and interchange formats – Information interchange – Representation of dates and times</a>.</li> <li> -<a href="http://www.w3.org/TR/xmlschema-2/#dateTime"><abbr>XML</abbr> +<a href="https://www.w3.org/TR/xmlschema-2/#dateTime"><abbr>XML</abbr> Schema: Datatypes – dateTime</a> specifies a format inspired by <abbr>ISO</abbr> 8601 that is in common use in <abbr>XML</abbr> data.</li> <li> -<a href="http://tools.ietf.org/html/rfc5322">Internet +<a href="https://tools.ietf.org/html/rfc5322">Internet Message Format</a> (Internet <abbr>RFC</abbr> 5322) §3.3 specifies the time notation used in email and <a href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"><abbr>HTTP</abbr></a> headers.</li> <li> -<a href="http://tools.ietf.org/html/rfc3339">Date and Time +<a href="https://tools.ietf.org/html/rfc3339">Date and Time on the Internet: Timestamps</a> (Internet <abbr>RFC</abbr> 3339) specifies an <abbr>ISO</abbr> 8601 profile for use in new Internet Index: src/lib/libc/time/zic.c diff -u src/lib/libc/time/zic.c:1.58 src/lib/libc/time/zic.c:1.59 --- src/lib/libc/time/zic.c:1.58 Mon May 30 23:47:49 2016 +++ src/lib/libc/time/zic.c Fri Sep 16 13:12:06 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: zic.c,v 1.58 2016/05/31 03:47:49 dholland Exp $ */ +/* $NetBSD: zic.c,v 1.59 2016/09/16 17:12:06 christos Exp $ */ /* ** This file is in the public domain, so clarified as of ** 2006-07-17 by Arthur David Olson. @@ -10,7 +10,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: zic.c,v 1.58 2016/05/31 03:47:49 dholland Exp $"); +__RCSID("$NetBSD: zic.c,v 1.59 2016/09/16 17:12:06 christos Exp $"); #endif /* !defined lint */ #include "private.h" @@ -153,6 +153,13 @@ static bool yearistype(int year, const c /* Bound on length of what %z can expand to. */ enum { PERCENT_Z_LEN_BOUND = sizeof "+995959" - 1 }; +/* If true, work around a bug in Qt 5.6.1 and earlier, which mishandles + tzdata binary files whose POSIX-TZ-style strings contain '<'; see + QTBUG-53071 <https://bugreports.qt.io/browse/QTBUG-53071>. This + workaround will no longer be needed when Qt 5.6.1 and earlier are + obsolete, say in the year 2021. */ +enum { WORK_AROUND_QTBUG_53071 = true }; + static int charcnt; static bool errors; static bool warnings; @@ -430,7 +437,8 @@ growalloc(void *ptr, size_t itemsize, in if (nitems < *nitems_alloc) return ptr; else { - int amax = INT_MAX < SIZE_MAX ? INT_MAX : SIZE_MAX; + size_t nitems_max = INT_MAX - WORK_AROUND_QTBUG_53071; + int amax = nitems_max < SIZE_MAX ? nitems_max : SIZE_MAX; if ((amax - 1) / 3 * 2 < *nitems_alloc) memory_exhausted(_("int overflow")); *nitems_alloc = *nitems_alloc + (*nitems_alloc >> 1) + 1; @@ -859,10 +867,6 @@ static zic_t const max_time = MAXVAL (zi rounded downward to the negation of a power of two that is comfortably outside the error bounds. - zic does not output time stamps before this, partly because they - are physically suspect, and partly because GNOME mishandles them; see - GNOME bug 730332 <https://bugzilla.gnome.org/show_bug.cgi?id=730332>. - For the time of the Big Bang, see: Ade PAR, Aghanim N, Armitage-Caplan C et al. Planck 2013 results. @@ -883,7 +887,19 @@ static zic_t const max_time = MAXVAL (zi #define BIG_BANG (- (1LL << 59)) #endif -static const zic_t big_bang_time = BIG_BANG; +/* If true, work around GNOME bug 730332 + <https://bugzilla.gnome.org/show_bug.cgi?id=730332> + by refusing to output time stamps before BIG_BANG. + Such time stamps are physically suspect anyway. + + The GNOME bug is scheduled to be fixed in GNOME 3.22, and if so + this workaround will no longer be needed when GNOME 3.21 and + earlier are obsolete, say in the year 2021. */ +enum { WORK_AROUND_GNOME_BUG_730332 = true }; + +static const zic_t early_time = (WORK_AROUND_GNOME_BUG_730332 + ? BIG_BANG + : MINVAL(zic_t, TIME_T_BITS_IN_FILE)); /* Return 1 if NAME is a directory, 0 if it's something else, -1 if trouble. */ static int @@ -1382,7 +1398,7 @@ inleap(char **fields, int nfields) return; } t = tadd(t, tod); - if (t < big_bang_time) { + if (t < early_time) { error(_("leap second precedes Big Bang")); return; } @@ -1626,8 +1642,11 @@ writezone(const char *const name, const char * fullname; static const struct tzhead tzh0; static struct tzhead tzh; + zic_t one = 1; + zic_t y2038_boundary = one << 31; + int nats = timecnt + WORK_AROUND_QTBUG_53071; zic_t *ats = zic_malloc(size_product(timecnt, sizeof *ats + 1)); - void *typesptr = ats + timecnt; + void *typesptr = ats + nats; unsigned char *types = typesptr; /* @@ -1644,7 +1663,7 @@ writezone(const char *const name, const toi = 0; fromi = 0; - while (fromi < timecnt && attypes[fromi].at < big_bang_time) + while (fromi < timecnt && attypes[fromi].at < early_time) ++fromi; for ( ; fromi < timecnt; ++fromi) { if (toi > 1 && ((attypes[fromi].at + @@ -1671,6 +1690,19 @@ writezone(const char *const name, const ats[i] = attypes[i].at; types[i] = attypes[i].type; } + + /* Work around QTBUG-53071 for time stamps less than y2038_boundary - 1, + by inserting a no-op transition at time y2038_boundary - 1. + This works only for timestamps before the boundary, which + should be good enough in practice as QTBUG-53071 should be + long-dead by 2038. */ + if (WORK_AROUND_QTBUG_53071 && timecnt != 0 + && ats[timecnt - 1] < y2038_boundary - 1 && strchr(string, '<')) { + ats[timecnt] = y2038_boundary - 1; + types[timecnt] = types[timecnt - 1]; + timecnt++; + } + /* ** Correct for leap seconds. */ @@ -2377,9 +2409,9 @@ outzone(const struct zone *zpfirst, int */ stdoff = 0; zp = &zpfirst[i]; - usestart = i > 0 && (zp - 1)->z_untiltime > big_bang_time; + usestart = i > 0 && (zp - 1)->z_untiltime > early_time; useuntil = i < (zonecount - 1); - if (useuntil && zp->z_untiltime <= big_bang_time) + if (useuntil && zp->z_untiltime <= early_time) continue; gmtoff = zp->z_gmtoff; eat(zp->z_filename, zp->z_linenum); @@ -2395,7 +2427,7 @@ outzone(const struct zone *zpfirst, int if (usestart) { addtt(starttime, type); usestart = false; - } else addtt(big_bang_time, type); + } else addtt(early_time, type); } else for (year = min_year; year <= max_year; ++year) { if (useuntil && year > zp->z_untilrule.r_hiyear) break; @@ -2586,8 +2618,8 @@ error(_("can't determine time zone abbre static void addtt(zic_t starttime, int type) { - if (starttime <= big_bang_time || - (timecnt == 1 && attypes[0].at < big_bang_time)) { + if (starttime <= early_time + || (timecnt == 1 && attypes[0].at < early_time)) { gmtoffs[0] = gmtoffs[type]; isdsts[0] = isdsts[type]; ttisstds[0] = ttisstds[type]; Added files: Index: src/lib/libc/time/tz-how-to.html diff -u /dev/null src/lib/libc/time/tz-how-to.html:1.1 --- /dev/null Fri Sep 16 13:12:06 2016 +++ src/lib/libc/time/tz-how-to.html Fri Sep 16 13:12:06 2016 @@ -0,0 +1,680 @@ +<!DOCTYPE html + PUBLIC "-//W3C//DTD HTML 4.01//EN" + "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head><title>How to Read the tz Database</title></head> +<body> +<h2>How to Read the <a href="https://en.wikipedia.org/wiki/Tz_database">tz +Database</a> Source Files</h2> +<h3>by Bill Seymour</h3> +<p>This page uses the <code>America/Chicago</code> and +<code>Pacific/Honolulu</code> zones as examples of how to infer +times of day from the <a href="tz-link.htm">tz database</a> +source files. It might be helpful, but not absolutely necessary, +for the reader to have already downloaded the +<a href="http://www.iana.org/time-zones/repository/tzdata-latest.tar.gz">latest +release of the database</a> and become familiar with the basic layout +of the data files. The format is explained in the “man +page” for the zic compiler, <code>zic.8.txt</code>, in +the <code>code</code> subdirectory.</p> + +<p>We’ll begin by talking about the rules for changing between standard +and daylight saving time since we’ll need that information when we talk +about the zones.</p> + +<p>First, let’s consider the special daylight saving time rules +for Chicago (from the <code>northamerica</code> file in +the <code>data</code> subdirectory):</p> + +<table border="1"> +<tr> + <th colspan="6">From the Source File</th> +</tr> +<tr> + <td colspan="6" align="center"><table><tr><td> +<pre> +#Rule NAME FROM TO TYPE IN ON AT SAVE LETTER +Rule Chicago 1920 only - Jun 13 2:00 1:00 D +Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S +Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D +Rule Chicago 1922 1966 - Apr lastSun 2:00 1:00 D +Rule Chicago 1922 1954 - Sep lastSun 2:00 0 S +Rule Chicago 1955 1966 - Oct lastSun 2:00 0 S +</pre> + </td></tr></table></td> +</tr> +<tr> + <th colspan="6">Reformatted a Bit</th> +</tr> +<tr> + <th>From</th> + <th>To</th> + <th colspan="2">On</th> + <th>At</th> + <th>Action</th> +</tr> +<tr align="center"> + <td colspan="2">1920 only</td> + <td colspan="2">June 13<small><sup>th</sup></small></td> + <td rowspan="6">02:00 local</td> + <td>go to daylight saving time</td> +</tr> +<tr align="center"> + <td>1920</td> + <td>1921</td> + <td rowspan="5">last Sunday</td> + <td>in October</td> + <td>return to standard time</td> +</tr> +<tr align="center"> + <td colspan="2">1921 only</td> + <td>in March</td> + <td rowspan="2">go to daylight saving time</td> +</tr> +<tr align="center"> + <td rowspan="2">1922</td> + <td>1966</td> + <td>in April</td> +</tr> +<tr align="center"> + <td>1954</td> + <td>in September</td> + <td rowspan="2">return to standard time</td> +</tr> +<tr align="center"> + <td>1955</td> + <td>1966</td> + <td>in October</td> +</tr> +</table> + +<p>We’ll basically just ignore the <code>TYPE</code> column. +In the 2007j release, the most recent as of this writing, the +<code>TYPE</code> column never contains anything but a hyphen, +a kind of null value. (From the description in <code>zic.8.txt</code>, +this appears to be a mechanism for removing years from a set +in some localizable way. It’s used in the file, <code>pacificnew</code>, +to determine whether a given year will have a US presidential election; +but everything related to that use is commented out.) + +<p>The <code>SAVE</code> column contains the wall clock offset from +local standard time. +This is usually either zero for standard time or one hour for daylight +saving time; but there’s no reason, in principle, why it can’t +take on other values. + +<p>The <code>LETTER</code> (sometimes called <code>LETTER/S</code>) +column can contain a variable +part of the usual abbreviation of the time zone’s name, or it can just +be a hyphen if there’s no variable part. For example, the abbreviation +used in the central time zone will be either “CST” or +“CDT”. The variable part is ‘S’ or ‘D’; +and, sure enough, that’s just what we find in +the <code>LETTER</code> column +in the <code>Chicago</code> rules. More about this when we talk about +“Zone” lines. + +<p>One important thing to notice is that “Rule” lines +want at once to be both <i>transitions</i> and <i>steady states</i>: +<ul> +<li>On the one hand, they represent transitions between standard and +daylight saving time; and any number of Rule lines can be in effect +during a given period (which will always be a non-empty set of +contiguous calendar years).</li> +<li>On the other hand, the <code>SAVE</code> and <code>LETTER</code> +columns contain state that exists between transitions. More about this +when we talk about the US rules.</li> +</ul> + +<p>In the example above, the transition to daylight saving time +happened on the 13<small><sup>th</sup></small> of June in 1920, and on +the last Sunday in March in 1921; but the return to standard time +happened on the last Sunday in October in both of those +years. Similarly, the rule for changing to daylight saving time was +the same from 1922 to 1966; but the rule for returning to standard +time changed in 1955. Got it?</p> + +<p>OK, now for the somewhat more interesting “US” rules:</p> + +<table border="1"> +<tr> + <th colspan="6">From the Source File</th> +</tr> +<tr> + <td colspan="6" align="center"><table><tr><td> +<pre> +#Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule US 1918 1919 - Mar lastSun 2:00 1:00 D +Rule US 1918 1919 - Oct lastSun 2:00 0 S +Rule US 1942 only - Feb 9 2:00 1:00 W # War +Rule US 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule US 1945 only - Sep 30 2:00 0 S +Rule US 1967 2006 - Oct lastSun 2:00 0 S +Rule US 1967 1973 - Apr lastSun 2:00 1:00 D +Rule US 1974 only - Jan 6 2:00 1:00 D +Rule US 1975 only - Feb 23 2:00 1:00 D +Rule US 1976 1986 - Apr lastSun 2:00 1:00 D +Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D +Rule US 2007 max - Mar Sun>=8 2:00 1:00 D +Rule US 2007 max - Nov Sun>=1 2:00 0 S +</pre> + </td></tr></table></td> +</tr> +<tr> + <th colspan="6">Reformatted a Bit</th> +</tr> +<tr> + <th>From</th> + <th>To</th> + <th colspan="2">On</th> + <th>At</th> + <th>Action</th> +</tr> +<tr align="center"> + <td rowspan="2">1918</td> + <td rowspan="2">1919</td> + <td rowspan="2">last Sunday</td> + <td>in March</td> + <td rowspan="3">02:00 local</td> + <td>go to daylight saving time</td> +</tr> +<tr align="center"> + <td>in October</td> + <td>return to standard time</td> +</tr> +<tr align="center"> + <td colspan="2">1942 only</td> + <td colspan="2">February 9<small><sup>th</sup></small></td> + <td>go to “war time”</td> +</tr> +<tr align="center"> + <td colspan="2" rowspan="2">1945 only</td> + <td colspan="2">August 14<small><sup>th</sup></small></td> + <td>23:00 <a href="https://en.wikipedia.org/wiki/Universal_Time">UT</a></td> + <td> + rename “war time” to “peace<br>time;” + clocks don’t change + </td> +</tr> +<tr align="center"> + <td colspan="2">September 30<small><sup>th</sup></small></td> + <td rowspan="9">02:00 local</td> + <td rowspan="2">return to standard time</td> +</tr> +<tr align="center"> + <td rowspan="2">1967</td> + <td>2006</td> + <td rowspan="2">last Sunday</td> + <td>in October</td> +</tr> +<tr align="center"> + <td>1973</td> + <td>in April</td> + <td rowspan="6">go to daylight saving time</td> +</tr> +<tr align="center"> + <td colspan="2">1974 only</td> + <td colspan="2">January 6<small><sup>th</sup></small></td> +</tr> +<tr align="center"> + <td colspan="2">1975 only</td> + <td colspan="2">February 23<small><sup>rd</sup></small></td> +</tr> +<tr align="center"> + <td>1976</td> + <td>1986</td> + <td>last Sunday</td> + <td rowspan="2">in April</td> +</tr> +<tr align="center"> + <td>1987</td> + <td>2006</td> + <td>first Sunday</td> +</tr> +<tr align="center"> + <td rowspan="2">2007</td> + <td rowspan="2">present</td> + <td colspan="2">second Sunday in March</td> +</tr> +<tr align="center"> + <td colspan="2">first Sunday in November</td> + <td>return to standard time</td> +</tr> +</table> + +<p>There are two interesting things to note here.</p> + +<p>First, the time that something happens (in the <code>AT</code> +column) is not necessarily the local wall clock time. The time can be +suffixed with ‘s’ (for “standard”) to mean +local standard time (different from wall clock time when observing +daylight saving time); or it can be suffixed with ‘g’, +‘u’, or ‘z’, all three of which mean the +standard time at the +<a href="https://en.wikipedia.org/wiki/Prime_Meridian">prime meridan</a>. +‘g’ stands for “<a +href="https://en.wikipedia.org/wiki/Greenwich_Mean_Time">GMT</a>”; +‘u’ stands for “<a +href="https://en.wikipedia.org/wiki/Universal_Time">UT</a>” or “<a +href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time">UTC</a>” +(whichever was official at the time); ‘z’ stands for the +<a href="https://en.wikipedia.org/wiki/Nautical_time">nautical time zone</a> +Z (a.k.a. “Zulu” which, in turn, stands for ‘Z’). +The time can also be suffixed with ‘w’ meaning “wall +clock time;” but it usually isn’t because that’s the +default.</p> + +<p>Second, the day in the <code>ON</code> column, in addition to +“<code>lastSun</code>” or a particular day of the month, +can have the form, “<code>Sun>=</code><i>x</i>” or +“<code>Sun<=</code><i>x</i>,” where <i>x</i> is a day +of the month. For example, “<code>Sun>=8</code>” means +“the first Sunday on or after the eighth of the month,” in +other words, the second Sunday of the month. Furthermore, although +there are no examples above, the weekday needn’t be +“<code>Sun</code>” in either form, but can be the usual +three-character English abbreviation for any day of the week.</p> + +<p>And the US rules give us more examples of a couple of things +already mentioned:</p> + +<ul> +<li>The rules for changing to and from daylight saving time are +actually <i>different sets</i> of rules; and the two sets can change +independently. Consider, for example, that the rule for the return to +standard time stayed the same from 1967 to 2006; but the rule for the +transition to daylight saving time changed several times in the same +period. There can also be periods, 1946 to 1966 for example, when no +rule from this group is in effect, and so either no transition +happened in those years, or some other rule is in effect (perhaps a +state or other more local rule).</li> + +<li>The <code>SAVE</code> and <code>LETTER</code> columns +contain <i>steady state</i>, not transitions. Consider, for example, +the transition from “war time” to “peace time” +that happened on August 14, 1945. The “1:00” in +the <code>SAVE</code> column is <i>not</i> an instruction to advance +the clock an hour. It means that clocks should <i>be</i> one hour +ahead of standard time, which they already are because of the previous +rule, so there should be no change.</li> + +</ul> + +<p>OK, now let’s look at a Zone record:</p> + +<table border="1"> +<tr> + <th colspan="5">From the Source File</th> +</tr> +<tr> + <td colspan="6" align="center"><table><tr><td> +<pre> +#Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:09:24 + -6:00 US C%sT 1920 + -6:00 Chicago C%sT 1936 Mar 1 2:00 + -5:00 - EST 1936 Nov 15 2:00 + -6:00 Chicago C%sT 1942 + -6:00 US C%sT 1946 + -6:00 Chicago C%sT 1967 + -6:00 US C%sT +</pre> + </td></tr></table></td> +</tr> +<tr> + <th colspan="5">Columns Renamed</th> +</tr> +<tr> + <th rowspan="2">Standard Offset<br> + from <a href="https://en.wikipedia.org/wiki/Prime_Meridian">Prime + Meridian</a></th> + <th rowspan="2">Daylight<br>Saving Time</th> + <th rowspan="2">Abbreviation(s)</th> + <th colspan="2">Ending at Local Time</th> +</tr> +<tr> + <th>Date</th> + <th>Time</th> +</tr> +<tr align="center"> + <td>−5:50:36</td> + <td>not observed</td> + <td>LMT</td> + <td>1883-11-18</td> + <td>12:09:24</td> +</tr> +<tr align="center"> + <td rowspan="2">−6:00:00</td> + <td>US rules</td> + <td rowspan="2">CST or CDT</td> + <td>1920-01-01</td> + <td>00:00:00</td> +</tr> +<tr align="center"> + <td>Chicago rules</td> + <td>1936-03-01</td> + <td rowspan="2">02:00:00</td> +</tr> +<tr align="center"> + <td>−5:00:00</td> + <td>not observed</td> + <td>EST</td> + <td>1936-11-15</td> +</tr> +<tr align="center"> + <td rowspan="4">−6:00:00</td> + <td>Chicago rules</td> + <td>CST or CDT</td> + <td>1942-01-01</td> + <td rowspan="3">00:00:00</td> +</tr> +<tr align="center"> + <td>US rules</td> + <td>CST, CWT or CPT</td> + <td>1946-01-01</td> +</tr> +<tr align="center"> + <td>Chicago rules</td> + <td rowspan="2">CST or CDT</td> + <td>1967-01-01</td> +</tr> +<tr align="center"> + <td>US rules</td> + <td colspan="2">—</td> +</tr> +</table> + +<p>There are a couple of interesting differences between Zones and Rules.</p> + +<p>First, and somewhat trivially, whereas Rules are considered to +contain one or more records, a Zone is considered to be a single +record with zero or more <i>continuation lines</i>. Thus, the keyword, +“<code>Zone</code>,” and the zone name are not +repeated. The last line is the one without anything in +the <code>[UNTIL]</code> column.</p> + +<p>Second, and more fundamentally, each line of a Zone represents a +steady state, not a transition between states. The state exists from +the date and time in the previous line’s <code>[UNTIL]</code> +column up to the date and time in the current +line’s <code>[UNTIL]</code> column. In other words, the date and +time in the <code>[UNTIL]</code> column is the instant that separates +this state from the next. Where that would be ambiguous because +we’re setting our clocks back, the <code>[UNTIL]</code> column +specifies the first occurrence of the instant. The state specified by +the last line, the one without anything in the <code>[UNTIL]</code> +column, continues to the present.</p> + +<p>The first line typically specifies the mean solar time observed +before the introduction of standard time. Since there’s no line before +that, it has no beginning. <code>8-) </code> For some places near the <a +href="https://en.wikipedia.org/wiki/International_Date_Line">International +Date Line</a>, the first <i>two</i> lines will show solar times +differing by 24 hours; this corresponds to a movement of the Date +Line. For example:</p> + +<pre> +#Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Juneau 15:02:19 - LMT 1867 Oct 18 + -8:57:41 - LMT ... +</pre> + +<p>When Alaska was purchased from Russia in 1867, the Date Line moved +from the Alaska/Canada border to the Bering Strait; and the time in +Alaska was then 24 hours earlier than it had +been. <code><aside></code>(6 October in the Julian calendar, +which Russia was still using then for religious reasons, was followed +by <i>a second instance of the same day with a different name</i>, 18 +October in the Gregorian calendar. Isn’t civil time +wonderful? <code>8-)</code>)<code></aside></code></p> + +<p>The abbreviation, “LMT” stands for “local mean +time”, which is an invention of +the <a href="https://en.wikipedia.org/wiki/Tz_database">tz +database</a> and was probably never actually used during the +period. Furthermore, the value is almost certainly wrong except in the +archetypal place after which the zone is named. (The tz database +usually doesn’t provide a separate Zone record for places where +nothing significant happened after 1970.)</p> + +<p>The <code>RULES</code> column tells us whether daylight saving time is being observed: +<ul> +<li>A hyphen, a kind of null value, means that we have not set our +clocks ahead of standard time.</li> + +<li>An amount of time (usually but not necessarily “1:00” +meaning one hour) means that we have set our clocks ahead by that +amount.</li> + +<li>Some alphabetic string means that we <i>might have</i> set our +clocks ahead; and we need to check the rule the name of which is the +given alphabetic string.</li> +</ul> + +<p>An example of a specific amount of time is:</p> +<pre> +#Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone Pacific/Honolulu ... 1933 Apr 30 2:00 + -10:30 1:00 HDT 1933 May 21 2:00 + ... +</pre> + +<p>Hawaii tried daylight saving time for three weeks in 1933 and +decided they didn’t like it. <code>8-) </code>Note that +the <code>GMTOFF</code> column always contains the standard time +offset, so the wall clock time during this period was GMT − +10:30 + 1:00 = GMT − 9:30.</p> + +<p>The <code>FORMAT</code> column specifies the usual abbreviation of +the time zone name. It can have one of three forms:</p> +<ul> + +<li>a string of three or more characters that are either ASCII alphanumerics, +“<code>+</code>”, or “<code>-</code>”, +in which case that’s the abbreviation</li> + +<li>a pair of strings separated by a slash +(‘<code>/</code>’), in which case the first string is the +abbreviation for the standard time name and the second string is the +abbreviation for the daylight saving time name</li> + +<li>a string containing “<code>%s</code>,” in which case +the “<code>%s</code>” will be replaced by the text in the +appropriate Rule’s <code>LETTER</code> column</li> +</ul> + +<p>The last two make sense only if there’s a named rule in effect.</p> + +<p>An example of a slash is:</p> +<pre> +#Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone Europe/London ... 1996 + 0:00 EU GMT/BST +</pre> + +<p>The current time in the UK is called either Greenwich mean time or +British summer time.</p> + +<p>One wrinkle, not fully explained in <code>zic.8.txt</code>, is what +happens when switching to a named rule. To what values should +the <code>SAVE</code> and <code>LETTER</code> data be initialized?</p> + +<ul> +<li>If at least one transition has happened, use +the <code>SAVE</code> and <code>LETTER</code> data from the most +recent.</li> + +<li>If switching to a named rule before any transition has happened, +assume standard time (<code>SAVE</code> zero), and use +the <code>LETTER</code> data from the earliest transition with +a <code>SAVE</code> of zero. + +</ul> + +<p>And three last things about the <code>FORMAT</code> column:</p> +<ul> + +<li>The <a href="https://en.wikipedia.org/wiki/Tz_database">tz +database</a> gives abbreviations for time zone names in <i>popular +usage</i>, which is not necessarily “correct” by law. For +example, the last line in +<code>Zone</code> <code>Pacific/Honolulu</code> (shown below) gives +“HST” for “Hawaii standard time” even though the +<a href="http://www.law.cornell.edu/uscode/html/uscode15/usc_sec_15_00000263----000-.html">legal</a> +name for that time zone is “Hawaii-Aleutian standard time.” +This author has read that there are also some places in Australia where +popular time zone names differ from the legal ones. + +<li>No attempt is made to <a +href="https://en.wikipedia.org/wiki/Internationalization_and_localization">localize</a> +the abbreviations. They are intended to be the values returned through the +<code>"%Z"</code> format specifier to +<a href="https://en.wikipedia.org/wiki/C_(programming_language)">C</a>’s +<a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html"><code>strftime</code></a> +function in the +<a href="http://www.chemie.fu-berlin.de/chemnet/use/info/libc/libc_19.html#SEC324">“C” locale</a>. + +<li>If there is no generally-accepted abbreviation for a time zone, +a numeric offset is used instead, e.g., <code>+07</code> for 7 hours +ahead of Greenwich. By convention, <code>-00</code> is used in a +zone while uninhabited, where the offset is zero but in some sense +the true offset is undefined. +</ul> + +<p>As a final example, here’s the complete history for Hawaii:</p> + +<table border="1"> +<tr> + <th colspan="6">Relevant Excerpts from the US Rules</th> +</tr> +<tr> + <td colspan="6" align="center"><table><tr><td> +<pre> +#Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule US 1918 1919 - Oct lastSun 2:00 0 S +Rule US 1942 only - Feb 9 2:00 1:00 W # War +Rule US 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule US 1945 only - Sep 30 2:00 0 S +</pre> + </td></tr></table></td> +</tr> +<tr> + <th colspan="6">The Zone Record</th> +</tr> +<tr> + <td colspan="6" align="center"><table><tr><td> +<pre> +#Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone Pacific/Honolulu -10:31:26 - LMT 1900 Jan 1 12:00 + -10:30 - HST 1933 Apr 30 2:00 + -10:30 1:00 HDT 1933 May 21 2:00 + -10:30 US H%sT 1947 Jun 8 2:00 + -10:00 - HST +</pre> + </td></tr></table></td> +</tr> +<tr> + <th colspan="6">What We Infer</th> +</tr> +<tr> + <th rowspan="2">Wall-Clock<br>Offset from<br>Prime Meridian</th> + <th rowspan="2">Adjust<br>Clocks</th> + <th colspan="2">Time Zone</th> + <th colspan="2">Ending at Local Time</th> +</tr> +<tr> + <th>Abbrv.</th> + <th>Name</th> + <th>Date</th> + <th>Time</th> +</tr> +<tr align="center"> + <td>−10:31:26</td> + <td>—</td> + <td>LMT</td> + <td>local mean time</td> + <td>1900-01-01</td> + <td>12:00</td> +</tr> +<tr align="center"> + <td>−10:30</td> + <td>+0:01:26</td> + <td>HST</td> + <td>Hawaii standard time</td> + <td>1933-04-30</td> + <td rowspan="3">02:00</td> +</tr> +<tr align="center"> + <td>−9:30</td> + <td>+1:00</td> + <td>HDT</td> + <td>Hawaii daylight time</td> + <td>1933-05-21</td> +</tr> +<tr align="center"> + <td>−10:30¹</td> + <td>−1:00¹</td> + <td>HST¹</td> + <td>Hawaii standard time</td> + <td>1942-02-09</td> +</tr> +<tr align="center"> + <td rowspan="2">−9:30</td> + <td>+1:00</td> + <td>HWT</td> + <td>Hawaii war time</td> + <td>1945-08-14</td> + <td>13:30²</td> +</tr> +<tr align="center"> + <td>0</td> + <td>HPT</td> + <td>Hawaii peace time</td> + <td>1945-09-30</td> + <td rowspan="2">02:00</td> +</tr> +<tr align="center"> + <td>−10:30</td> + <td>−1:00</td> + <td rowspan="2">HST</td> + <td rowspan="2">Hawaii standard time</td> + <td>1947-06-08</td> +</tr> +<tr align="center"> + <td>−10:00³</td> + <td>+0:30³</td> + <td colspan="2">—</td> +</tr> +<tr> + <td colspan="6"> + ¹Switching to US rules…most recent transition (in 1919) was to standard time + </td> +</tr> +<tr> + <td colspan="6"> + ²23:00 <a href="https://en.wikipedia.org/wiki/Universal_Time">UT</a> + + (−9:30) = 13:30 local + </td> +</tr> +<tr> + <td colspan="6"> + ³Since <a href="https://en.wikipedia.org/wiki/ISO_8601">1947–06–08T12:30Z</a>, + the civil time in Hawaii has been + <a href="https://en.wikipedia.org/wiki/Universal_Time">UT</a>/<a href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time">UTC</a> + − 10:00 year-round. + </td> +</tr> +</table> + +<p>There will be a short quiz later. <code>8-)</code></p> + +<hr> +<address> +This web page is in the public domain, so clarified as of +2015-10-20 by Bill Seymour. +<br> +All suggestions and corrections will be welcome; all flames will be amusing. +Mail to was at pobox dot com. +</address> +</body> +</html>