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 &amp; Timezones &ndash; 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>&nbsp;</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>&nbsp;</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>&nbsp;</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 &ndash; 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 &ndash; 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 &amp; 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 &ndash; tz
+<li><a href="https://sourceforge.net/projects/tzical/";>tziCal &ndash; 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 &ndash; 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 &ndash; 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 &ndash; 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 &ndash; History, rationale, laws &amp; 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 &ndash; Data elements and interchange formats &ndash; Information
 interchange &ndash; 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 &ndash; 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) &sect;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 &ldquo;man
+page&rdquo; for the zic compiler, <code>zic.8.txt</code>, in
+the <code>code</code> subdirectory.</p>
+
+<p>We&rsquo;ll begin by talking about the rules for changing between standard
+and daylight saving time since we&rsquo;ll need that information when we talk
+about the zones.</p>
+
+<p>First, let&rsquo;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&rsquo;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&rsquo;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&rsquo;s no reason, in principle, why it can&rsquo;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&rsquo;s name, or it can just
+be a hyphen if there&rsquo;s no variable part. For example, the abbreviation
+used in the central time zone will be either &ldquo;CST&rdquo; or
+&ldquo;CDT&rdquo;. The variable part is &lsquo;S&rsquo; or &lsquo;D&rsquo;;
+and, sure enough, that&rsquo;s just what we find in
+the <code>LETTER</code> column
+in the <code>Chicago</code> rules. More about this when we talk about
+&ldquo;Zone&rdquo; lines.
+
+<p>One important thing to notice is that &ldquo;Rule&rdquo; 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 &ldquo;US&rdquo; 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&gt;=1   2:00  1:00 D
+Rule  US   2007 max   -   Mar Sun&gt;=8   2:00  1:00 D
+Rule  US   2007 max   -   Nov Sun&gt;=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 &ldquo;war time&rdquo;</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 &ldquo;war time&rdquo; to &ldquo;peace<br>time;&rdquo;
+    clocks don&rsquo;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 &lsquo;s&rsquo; (for &ldquo;standard&rdquo;) to mean
+local standard time (different from wall clock time when observing
+daylight saving time); or it can be suffixed with &lsquo;g&rsquo;,
+&lsquo;u&rsquo;, or &lsquo;z&rsquo;, all three of which mean the
+standard time at the
+<a href="https://en.wikipedia.org/wiki/Prime_Meridian";>prime meridan</a>.
+&lsquo;g&rsquo; stands for &ldquo;<a
+href="https://en.wikipedia.org/wiki/Greenwich_Mean_Time";>GMT</a>&rdquo;;
+&lsquo;u&rsquo; stands for &ldquo;<a
+href="https://en.wikipedia.org/wiki/Universal_Time";>UT</a>&rdquo; or &ldquo;<a
+href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time";>UTC</a>&rdquo;
+(whichever was official at the time); &lsquo;z&rsquo; stands for the
+<a href="https://en.wikipedia.org/wiki/Nautical_time";>nautical time zone</a>
+Z (a.k.a. &ldquo;Zulu&rdquo; which, in turn, stands for &lsquo;Z&rsquo;).
+The time can also be suffixed with &lsquo;w&rsquo; meaning &ldquo;wall
+clock time;&rdquo; but it usually isn&rsquo;t because that&rsquo;s the
+default.</p>
+
+<p>Second, the day in the <code>ON</code> column, in addition to
+&ldquo;<code>lastSun</code>&rdquo; or a particular day of the month,
+can have the form, &ldquo;<code>Sun&gt;=</code><i>x</i>&rdquo; or
+&ldquo;<code>Sun&lt;=</code><i>x</i>,&rdquo; where <i>x</i> is a day
+of the month. For example, &ldquo;<code>Sun&gt;=8</code>&rdquo; means
+&ldquo;the first Sunday on or after the eighth of the month,&rdquo; in
+other words, the second Sunday of the month. Furthermore, although
+there are no examples above, the weekday needn&rsquo;t be
+&ldquo;<code>Sun</code>&rdquo; 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 &ldquo;war time&rdquo; to &ldquo;peace time&rdquo;
+that happened on August 14, 1945. The &ldquo;1:00&rdquo; 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&rsquo;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>&minus;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">&minus;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>&minus;5:00:00</td>
+  <td>not observed</td>
+  <td>EST</td>
+  <td>1936-11-15</td>
+</tr>
+<tr align="center">
+  <td rowspan="4">&minus;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">&mdash;</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,
+&ldquo;<code>Zone</code>,&rdquo; 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&rsquo;s <code>[UNTIL]</code>
+column up to the date and time in the current
+line&rsquo;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&rsquo;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&rsquo;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>&lt;aside&gt;</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&rsquo;t civil time
+wonderful? <code>8-)</code>)<code>&lt;/aside&gt;</code></p>
+
+<p>The abbreviation, &ldquo;LMT&rdquo; stands for &ldquo;local mean
+time&rdquo;, 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&rsquo;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 &ldquo;1:00&rdquo;
+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&rsquo;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 &minus;
+10:30 + 1:00 = GMT &minus; 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,
+&ldquo;<code>+</code>&rdquo;, or &ldquo;<code>-</code>&rdquo;,
+in which case that&rsquo;s the abbreviation</li>
+
+<li>a pair of strings separated by a slash
+(&lsquo;<code>/</code>&rsquo;), 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 &ldquo;<code>%s</code>,&rdquo; in which case
+the &ldquo;<code>%s</code>&rdquo; will be replaced by the text in the
+appropriate Rule&rsquo;s <code>LETTER</code> column</li>
+</ul>
+
+<p>The last two make sense only if there&rsquo;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 &ldquo;correct&rdquo; by law. For
+example, the last line in
+<code>Zone</code> <code>Pacific/Honolulu</code> (shown below) gives
+&ldquo;HST&rdquo; for &ldquo;Hawaii standard time&rdquo; 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 &ldquo;Hawaii-Aleutian standard time.&rdquo;
+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>&rsquo;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";>&ldquo;C&rdquo; 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&rsquo;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>&minus;10:31:26</td>
+  <td>&mdash;</td>
+  <td>LMT</td>
+  <td>local mean time</td>
+  <td>1900-01-01</td>
+  <td>12:00</td>
+</tr>
+<tr align="center">
+  <td>&minus;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>&minus;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>&minus;10:30&sup1;</td>
+  <td>&minus;1:00&sup1;</td>
+  <td>HST&sup1;</td>
+  <td>Hawaii standard time</td>
+  <td>1942-02-09</td>
+</tr>
+<tr align="center">
+  <td rowspan="2">&minus;9:30</td>
+  <td>+1:00</td>
+  <td>HWT</td>
+  <td>Hawaii war time</td>
+  <td>1945-08-14</td>
+  <td>13:30&sup2;</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>&minus;10:30</td>
+  <td>&minus;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>&minus;10:00&sup3;</td>
+  <td>+0:30&sup3;</td>
+  <td colspan="2">&mdash;</td>
+</tr>
+<tr>
+  <td colspan="6">
+    &sup1;Switching to US rules&hellip;most recent transition (in 1919) was to standard time
+  </td>
+</tr>
+<tr>
+  <td colspan="6">
+    &sup2;23:00 <a href="https://en.wikipedia.org/wiki/Universal_Time";>UT</a>
+    + (&minus;9:30) = 13:30 local
+  </td>
+</tr>
+<tr>
+  <td colspan="6">
+    &sup3;Since <a href="https://en.wikipedia.org/wiki/ISO_8601";>1947&ndash;06&ndash;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>
+    &minus; 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>

Reply via email to