{"action":"created","comment":{"url":"https://api.github.com/repos/eah13/tzbd/pulls/comments/183148223","pull_request_review_id":114098864,"id":183148223,"diff_hunk":"@@ -0,0 +1,1034 @@\n+<!DOCTYPE html>\n+<html lang=\"en\">\n+<head>\n+  <title>Theory and pragmatics of the tz code and data</title>\n+  <meta charset=\"UTF-8\">\n+</head>\n+\n+<!-- The somewhat-unusal indenting style in this file is intended to\n+     shrink the output of the shell command 'diff Theory Theory.html',\n+     where 'Theory' was the plain text file that this file is derived\n+     from.  The 'Theory' file used leading white space to indent, and\n+     when possible that indentation is preserved here.  Eventually we\n+     may stop doing this and remove this comment.  -->\n+\n+<body>\n+  <h1>Theory and pragmatics of the tz code and data</h1>\n+  <h3>Outline</h3>\n+  <nav>\n+    <ul>\n+      <li><a href=\"#scope\">Scope of the tz database</a></li>\n+      <li><a href=\"#naming\">Names of time zone rules</a></li>\n+      <li><a href=\"#abbreviations\">Time zone abbreviations</a></li>\n+      <li><a href=\"#accuracy\">Accuracy of the tz database</a></li>\n+      <li><a href=\"#functions\">Time and date functions</a></li>\n+      <li><a href=\"#stability\">Interface stability</a></li>\n+      <li><a href=\"#calendar\">Calendrical issues</a></li>\n+      <li><a href=\"#planets\">Time and time zones on other planets</a></li>\n+    </ul>\n+  </nav>\n+\n+\n+  <section>\n+    <h2 id=\"scope\">Scope of the tz database</h2>\n+<p>\n+The tz database attempts to record the history and predicted future of\n+all computer-based clocks that track civil time.  To represent this\n+data, the world is partitioned into regions whose clocks all agree\n+about timestamps that occur after the somewhat-arbitrary cutoff point\n+of the POSIX Epoch (1970-01-01 00:00:00 UTC).  For each such region,\n+the database records all known clock transitions, and labels the region\n+with a notable location.  Although 1970 is a somewhat-arbitrary\n+cutoff, there are significant challenges to moving the cutoff earlier\n+even by a decade or two, due to the wide variety of local practices\n+before computer timekeeping became prevalent.\n+</p>\n+\n+<p>\n+Clock transitions before 1970 are recorded for each such location,\n+because most systems support timestamps before 1970 and could\n+misbehave if data entries were omitted for pre-1970 transitions.\n+However, the database is not designed for and does not suffice for\n+applications requiring accurate handling of all past times everywhere,\n+as it would take far too much effort and guesswork to record all\n+details of pre-1970 civil timekeeping.\n+</p>\n+\n+<p>\n+As described below, reference source code for using the tz database is\n+also available.  The tz code is upwards compatible with POSIX, an\n+international standard for UNIX-like systems.  As of this writing, the\n+current edition of POSIX is:\n+  <a href=\"http://pubs.opengroup.org/onlinepubs/9699919799/\">\n+  The Open Group Base Specifications Issue 7</a>,\n+  IEEE Std 1003.1-2008, 2016 Edition.\n+</p>\n+  </section>\n+\n+\n+\n+  <section>\n+    <h2 id=\"naming\">Names of time zone rules</h2>\n+<p>\n+Each of the database's time zone rules has a unique name.\n+Inexperienced users are not expected to select these names unaided.\n+Distributors should provide documentation and/or a simple selection\n+interface that explains the names; for one example, see the 'tzselect'\n+program in the tz code.  The\n+<a href=\"http://cldr.unicode.org/\">Unicode Common Locale Data\n+Repository</a> contains data that may be useful for other\n+selection interfaces.\n+</p>\n+\n+<p>\n+The time zone rule naming conventions attempt to strike a balance\n+among the following goals:\n+</p>\n+<ul>\n+  <li>\n+   Uniquely identify every region where clocks have agreed since 1970.\n+   This is essential for the intended use: static clocks keeping local\n+   civil time.\n+  </li>\n+  <li>\n+   Indicate to experts where that region is.\n+  </li>\n+  <li>\n+   Be robust in the presence of political changes.  For example, names\n+   of countries are ordinarily not used, to avoid incompatibilities\n+   when countries change their name (e.g. Zaire&rarr;Congo) or when\n+   locations change countries (e.g. Hong Kong from UK colony to\n+   China).\n+  </li>\n+  <li>\n+   Be portable to a wide variety of implementations.\n+  </li>\n+  <li>\n+   Use a consistent naming conventions over the entire world.\n+  </li>\n+</ul>\n+<p>\n+Names normally have the\n+form <var>AREA</var><code>/</code><var>LOCATION</var>,\n+where <var>AREA</var> is the name of a continent or ocean,\n+and <var>LOCATION</var> is the name of a specific\n+location within that region.  North and South America share the same\n+area, '<code>America</code>'.  Typical names are\n+'<code>Africa/Cairo</code>', '<code>America/New_York</code>', and\n+'<code>Pacific/Honolulu</code>'.\n+</p>\n+\n+<p>\n+Here are the general rules used for choosing location names,\n+in decreasing order of importance:\n+</p>\n+<ul>\n+  <li>\n+\tUse only valid POSIX file name components (i.e., the parts of\n+\t\tnames other than '<code>/</code>').  Do not use the file name\n+\t\tcomponents '<code>.</code>' and '<code>..</code>'.\n+\t\tWithin a file name component,\n+\t\tuse only ASCII letters, '<code>.</code>',\n+\t\t'<code>-</code>' and '<code>_</code>'.  Do not use\n+\t\tdigits, as that might create an ambiguity with POSIX\n+\t\tTZ strings.  A file name component must not exceed 14\n+\t\tcharacters or start with '<code>-</code>'.  E.g.,\n+\t\tprefer '<code>Brunei</code>' to\n+\t\t'<code>Bandar_Seri_Begawan</code>'.  Exceptions: see\n+\t\tthe discussion\n+\t\tof legacy names below.\n+  </li>\n+  <li>\n+\tA name must not be empty, or contain '<code>//</code>', or\n+\tstart or end with '<code>/</code>'.\n+  </li>\n+  <li>\n+\tDo not use names that differ only in case.  Although the reference\n+\t\timplementation is case-sensitive, some other implementations\n+\t\tare not, and they would mishandle names differing only in case.\n+  </li>\n+  <li>\n+\tIf one name <var>A</var> is an initial prefix of another\n+\t\tname <var>AB</var> (ignoring case), then <var>B</var>\n+\t\tmust not start with '<code>/</code>', as a\n+\t\tregular file cannot have\n+\t\tthe same name as a directory in POSIX.  For example,\n+\t\t'<code>America/New_York</code>' precludes\n+\t\t'<code>America/New_York/Bronx</code>'.\n+  </li>\n+  <li>\n+\tUninhabited regions like the North Pole and Bouvet Island\n+\t\tdo not need locations, since local time is not defined there.\n+  </li>\n+  <li>\n+\tThere should typically be at least one name for each ISO 3166-1\n+\t\tofficially assigned two-letter code for an inhabited country\n+\t\tor territory.\n+  </li>\n+  <li>\n+\tIf all the clocks in a region have agreed since 1970,\n+\t\tdon't bother to include more than one location\n+\t\teven if subregions' clocks disagreed before 1970.\n+\t\tOtherwise these tables would become annoyingly large.\n+  </li>\n+  <li>\n+\tIf a name is ambiguous, use a less ambiguous alternative;\n+\t\te.g. many cities are named San José and Georgetown, so\n+\t\tprefer '<code>Costa_Rica</code>' to '<code>San_Jose</code>' and '<code>Guyana</code>' to '<code>Georgetown</code>'.\n+  </li>\n+  <li>\n+\tKeep locations compact.  Use cities or small islands, not countries\n+\t\tor regions, so that any future time zone changes do not split\n+\t\tlocations into different time zones.  E.g. prefer\n+\t\t'<code>Paris</code>' to '<code>France</code>', since\n+\t\tFrance has had multiple time zones.\n+  </li>\n+  <li>\n+\tUse mainstream English spelling, e.g. prefer\n+\t\t'<code>Rome</code>' to '<code>Roma</code>', and prefer\n+\t\t'<code>Athens</code>' to the Greek\n+\t\t'<code>Αθήνα</code>' or the Romanized\n+\t\t'<code>Athína</code>'.\n+\t\tThe POSIX file name restrictions encourage this rule.\n+  </li>\n+  <li>\n+\tUse the most populous among locations in a zone,\n+\t\te.g. prefer '<code>Shanghai</code>' to\n+\t\t'<code>Beijing</code>'.  Among locations with\n+\t\tsimilar populations, pick the best-known location,\n+\t\te.g. prefer '<code>Rome</code>' to '<code>Milan</code>'.\n+  </li>\n+  <li>\n+\tUse the singular form, e.g. prefer '<code>Canary</code>' to '<code>Canaries</code>'.\n+  </li>\n+  <li>\n+\tOmit common suffixes like '<code>_Islands</code>' and\n+\t\t'<code>_City</code>', unless that would lead to\n+\t\tambiguity.  E.g. prefer '<code>Cayman</code>' to\n+\t\t'<code>Cayman_Islands</code>' and\n+\t\t'<code>Guatemala</code>' to\n+\t\t'<code>Guatemala_City</code>', but prefer\n+\t\t'<code>Mexico_City</code>' to '<code>Mexico</code>'\n+\t\tbecause the country\n+\t\tof Mexico has several time zones.\n+  </li>\n+  <li>\n+\tUse '<code>_</code>' to represent a space.\n+  </li>\n+  <li>\n+\tOmit '<code>.</code>' from abbreviations in names, e.g. prefer\n+\t\t'<code>St_Helena</code>' to '<code>St._Helena</code>'.\n+  </li>\n+  <li>\n+\tDo not change established names if they only marginally\n+\t\tviolate the above rules.  For example, don't change\n+\t\tthe existing name '<code>Rome</code>' to\n+\t\t'<code>Milan</code>' merely because\n+\t\tMilan's population has grown to be somewhat greater\n+\t\tthan Rome's.\n+  </li>\n+  <li>\n+\tIf a name is changed, put its old spelling in the\n+\t\t'<code>backward</code>' file.\n+\t\tThis means old spellings will continue to work.\n+  </li>\n+</ul>\n+\n+<p>\n+The file '<code>zone1970.tab</code>' lists geographical locations used\n+to name time\n+zone rules.  It is intended to be an exhaustive list of names for\n+geographic regions as described above; this is a subset of the names\n+in the data.  Although a '<code>zone1970.tab</code>' location's longitude\n+corresponds to its LMT offset with one hour for every 15 degrees east\n+longitude, this relationship is not exact.\n+</p>\n+\n+<p>\n+Older versions of this package used a different naming scheme,\n+and these older names are still supported.\n+See the file '<code>backward</code>' for most of these older names\n+(e.g., '<code>US/Eastern</code>' instead of '<code>America/New_York</code>').\n+The other old-fashioned names still supported are\n+'<code>WET</code>', '<code>CET</code>', '<code>MET</code>', and '<code>EET</code>' (see the file '<code>europe</code>').\n+</p>\n+\n+<p>\n+Older versions of this package defined legacy names that are\n+incompatible with the first rule of location names, but which are\n+still supported.  These legacy names are mostly defined in the file\n+'<code>etcetera</code>'.  Also, the file '<code>backward</code>' defines the legacy names\n+'<code>GMT0</code>', '<code>GMT-0</code>' and '<code>GMT+0</code>', and the file '<code>northamerica</code>' defines the\n+legacy names '<code>EST5EDT</code>', '<code>CST6CDT</code>', '<code>MST7MDT</code>', and '<code>PST8PDT</code>'.\n+</p>\n+\n+<p>\n+Excluding '<code>backward</code>' should not affect the other data.  If\n+'<code>backward</code>' is excluded, excluding '<code>etcetera</code>' should not affect the\n+remaining data.\n+</p>\n+\n+\n+  </section>\n+  <section>\n+    <h2 id=\"abbreviations\">Time zone abbreviations</h2>\n+<p>\n+When this package is installed, it generates time zone abbreviations\n+like '<code>EST</code>' to be compatible with human tradition and POSIX.\n+Here are the general rules used for choosing time zone abbreviations,\n+in decreasing order of importance:\n+<ul>\n+  <li>\n+\tUse three or more characters that are ASCII alphanumerics or\n+\t\t'<code>+</code>' or '<code>-</code>'.\n+\t\tPrevious editions of this database also used characters like\n+\t\t'<code> </code>' and '<code>?</code>', but these\n+\t\tcharacters have a special meaning to\n+\t\tthe shell and cause commands like\n+\t\t\t'<code>set `date`</code>'\n+\t\tto have unexpected effects.\n+\t\tPrevious editions of this rule required upper-case letters,\n+\t\tbut the Congressman who introduced Chamorro Standard Time\n+\t\tpreferred \"ChST\", so lower-case letters are now allowed.\n+\t\tAlso, POSIX from 2001 on relaxed the rule to allow\n+\t\t'<code>-</code>', '<code>+</code>',\n+\t\tand alphanumeric characters from the portable character set\n+\t\tin the current locale.  In practice ASCII alphanumerics and\n+\t\t'<code>+</code>' and '<code>-</code>' are safe in all locales.\n+\n+\t\tIn other words, in the C locale the POSIX extended regular\n+\t\texpression <code>[-+[:alnum:]]{3,}</code> should match\n+\t\tthe abbreviation.\n+\t\tThis guarantees that all abbreviations could have been\n+\t\tspecified by a POSIX TZ string.\n+  </li>\n+  <li>\n+\tUse abbreviations that are in common use among English-speakers,\n+\t\te.g. 'EST' for Eastern Standard Time in North America.\n+\t\tWe assume that applications translate them to other languages\n+\t\tas part of the normal localization process; for example,\n+\t\ta French application might translate 'EST' to 'HNE'.\n+  </li>\n+  <li>\n+\tFor zones whose times are taken from a city's longitude, use the\n+\t\ttraditional <var>x</var>MT notation, e.g. 'PMT' for\n+\t\tParis Mean Time.\n+\t\tThe only name like this in current use is 'GMT'.\n+  </li>\n+  <li>\n+\tUse 'LMT' for local mean time of locations before the introduction\n+\t\tof standard time; see \"<a href=\"#scope\">Scope of the\n+\t\ttz database</a>\".\n+  </li>\n+  <li>\n+\tIf there is no common English abbreviation, use numeric offsets like\n+\t\t<code>-</code>05 and <code>+</code>0830 that are\n+\t\tgenerated by zic's <code>%z</code> notation.\n+  </li>\n+  <li>\n+\tUse current abbreviations for older timestamps to avoid confusion.\n+\t\tFor example, in 1910 a common English abbreviation for UT +01\n+\t\tin central Europe was 'MEZ' (short for both \"Middle European\n+\t\tZone\" and for \"Mitteleuropäische Zeit\" in German).  Nowadays\n+\t\t'CET' (\"Central European Time\") is more common in English, and\n+\t\tthe database uses 'CET' even for circa-1910 timestamps as this\n+\t\tis less confusing for modern users and avoids the need for\n+\t\tdetermining when 'CET' supplanted 'MEZ' in common usage.\n+  </li>\n+  <li>\n+\tUse a consistent style in a zone's history.  For example, if a zone's\n+\t\thistory tends to use numeric abbreviations and a particular\n+\t\tentry could go either way, use a numeric abbreviation.\n+  </li>\n+</ul>\n+    [The remaining guidelines predate the introduction of <code>%z</code>.\n+    They are problematic as they mean tz data entries invent\n+    notation rather than record it.  These guidelines are now\n+    deprecated and the plan is to gradually move to <code>%z</code> for\n+    inhabited locations and to \"<code>-</code>00\" for uninhabited locations.]\n+<ul>\n+  <li>\n+\tIf there is no common English abbreviation, abbreviate the English\n+\t\ttranslation of the usual phrase used by native speakers.\n+\t\tIf this is not available or is a phrase mentioning the country\n+\t\t(e.g. \"Cape Verde Time\"), then:\n+\t<ul>\n+\t  <li>\n+\t\tWhen a country is identified with a single or principal zone,\n+\t\t\tappend 'T' to the country's ISO\tcode, e.g. 'CVT' for\n+\t\t\tCape Verde Time.  For summer time append 'ST';\n+\t\t\tfor double summer time append 'DST'; etc.\n+\t  </li>\n+\t  <li>\n+\t\tOtherwise, take the first three letters of an English place\n+\t\t\tname identifying each zone and append 'T', 'ST', etc.\n+\t\t\tas before; e.g. 'CHAST' for CHAtham Summer Time.\n+\t  </li>\n+\t</ul>\n+  </li>\n+  <li>\n+\tUse UT (with time zone abbreviation '<code>-</code>00') for\n+\t\tlocations while uninhabited.  The leading\n+\t\t'<code>-</code>' is a flag that the time\n+\t\tzone is in some sense undefined; this notation is\n+\t\tderived from Internet RFC 3339.\n+  </li>\n+</ul>\n+<p>\n+Application writers should note that these abbreviations are ambiguous\n+in practice: e.g. 'CST' has a different meaning in China than\n+it does in the United States.  In new applications, it's often better\n+to use numeric UT offsets like '<code>-</code>0600' instead of time zone\n+abbreviations like 'CST'; this avoids the ambiguity.\n+</p>\n+  </section>\n+\n+\n+  <section>\n+    <h2 id=\"accuracy\">Accuracy of the tz database</h2>\n+<p>\n+The tz database is not authoritative, and it surely has errors.\n+Corrections are welcome and encouraged; see the file CONTRIBUTING.\n+Users requiring authoritative data should consult national standards\n+bodies and the references cited in the database's comments.\n+</p>\n+\n+<p>\n+Errors in the tz database arise from many sources:\n+</p>\n+<ul>\n+  <li>\n+   The tz database predicts future timestamps, and current predictions\n+   will be incorrect after future governments change the rules.\n+   For example, if today someone schedules a meeting for 13:00 next\n+   October 1, Casablanca time, and tomorrow Morocco changes its\n+   daylight saving rules, software can mess up after the rule change\n+   if it blithely relies on conversions made before the change.\n+  </li>\n+  <li>\n+   The pre-1970 entries in this database cover only a tiny sliver of how\n+   clocks actually behaved; the vast majority of the necessary\n+   information was lost or never recorded.  Thousands more zones would\n+   be needed if the tz database's scope were extended to cover even\n+   just the known or guessed history of standard time; for example,\n+   the current single entry for France would need to split into dozens\n+   of entries, perhaps hundreds.  And in most of the world even this\n+   approach would be misleading due to widespread disagreement or\n+   indifference about what times should be observed.  In her 2015 book\n+   <cite>The Global Transformation of Time, 1870-1950</cite>, Vanessa Ogle writes\n+   \"Outside of Europe and North America there was no system of time\n+   zones at all, often not even a stable landscape of mean times,\n+   prior to the middle decades of the twentieth century\".  See:\n+   Timothy Shenk, <a\n+   href=\"https://www.dissentmagazine.org/blog/booked-a-global-history-of-time-vanessa-ogle\">Booked:\n+   A Global History of Time</a>. <cite>Dissent</cite> 2015-12-17.\n+  </li>\n+  <li>\n+   Most of the pre-1970 data entries come from unreliable sources, often\n+   astrology books that lack citations and whose compilers evidently\n+   invented entries when the true facts were unknown, without\n+   reporting which entries were known and which were invented.\n+   These books often contradict each other or give implausible entries,\n+   and on the rare occasions when they are checked they are\n+   typically found to be incorrect.\n+  </li>\n+  <li>\n+   For the UK the tz database relies on years of first-class work done by\n+   Joseph Myers and others; see\n+   \"<a href=\"https://www.polyomino.org.uk/british-time/\">History of\n+   legal time in Britain</a>\".\n+   Other countries are not done nearly as well.\n+  </li>\n+  <li>\n+   Sometimes, different people in the same city would maintain clocks\n+   that differed significantly.  Railway time was used by railroad\n+   companies (which did not always agree with each other),\n+   church-clock time was used for birth certificates, etc.\n+   Often this was merely common practice, but sometimes it was set by law.\n+   For example, from 1891 to 1911 the UT offset in France was legally\n+   0:09:21 outside train stations and 0:04:21 inside.\n+  </li>\n+  <li>\n+   Although a named location in the tz database stands for the\n+   containing region, its pre-1970 data entries are often accurate for\n+   only a small subset of that region.  For example, <code>Europe/London</code>\n+   stands for the United Kingdom, but its pre-1847 times are valid\n+   only for locations that have London's exact meridian, and its 1847\n+   transition to GMT is known to be valid only for the L&amp;NW and the\n+   Caledonian railways.\n+  </li>\n+  <li>\n+   The tz database does not record the earliest time for which a zone's\n+   data entries are thereafter valid for every location in the region.\n+   For example, <code>Europe/London</code> is valid for all locations in its\n+   region after GMT was made the standard time, but the date of\n+   standardization (1880-08-02) is not in the tz database, other than\n+   in commentary.  For many zones the earliest time of validity is\n+   unknown.\n+  </li>\n+  <li>\n+   The tz database does not record a region's boundaries, and in many\n+   cases the boundaries are not known.  For example, the zone\n+   <code>America/Kentucky/Louisville</code> represents a region around\n+   the city of\n+   Louisville, the boundaries of which are unclear.\n+  </li>\n+  <li>\n+   Changes that are modeled as instantaneous transitions in the tz\n+   database were often spread out over hours, days, or even decades.\n+  </li>\n+  <li>\n+   Even if the time is specified by law, locations sometimes\n+   deliberately flout the law.\n+  </li>\n+  <li>\n+   Early timekeeping practices, even assuming perfect clocks, were\n+   often not specified to the accuracy that the tz database requires.\n+  </li>\n+  <li>\n+   Sometimes historical timekeeping was specified more precisely\n+   than what the tz database can handle.  For example, from 1909 to\n+   1937 Netherlands clocks were legally UT +00:19:32.13, but the tz\n+   database cannot represent the fractional second.\n+  </li>\n+  <li>\n+   Even when all the timestamp transitions recorded by the tz database\n+   are correct, the tz rules that generate them may not faithfully\n+   reflect the historical rules.  For example, from 1922 until World\n+   War II the UK moved clocks forward the day following the third\n+   Saturday in April unless that was Easter, in which case it moved\n+   clocks forward the previous Sunday.  Because the tz database has no\n+   way to specify Easter, these exceptional years are entered as\n+   separate tz Rule lines, even though the legal rules did not change.\n+  </li>\n+  <li>\n+   The tz database models pre-standard time using the proleptic Gregorian\n+   calendar and local mean time (LMT), but many people used other\n+   calendars and other timescales.  For example, the Roman Empire used\n+   the Julian calendar, and had 12 varying-length daytime hours with a\n+   non-hour-based system at night.\n+  </li>\n+  <li>\n+   Early clocks were less reliable, and data entries do not represent\n+   clock error.\n+  </li>\n+  <li>\n+   The tz database assumes Universal Time (UT) as an origin, even\n+   though UT is not standardized for older timestamps.  In the tz\n+   database commentary, UT denotes a family of time standards that\n+   includes Coordinated Universal Time (UTC) along with other variants\n+   such as UT1 and GMT, with days starting at midnight.  Although UT\n+   equals UTC for modern timestamps, UTC was not defined until 1960,\n+   so commentary uses the more-general abbreviation UT for timestamps\n+   that might predate 1960.  Since UT, UT1, etc. disagree slightly,\n+   and since pre-1972 UTC seconds varied in length, interpretation of\n+   older timestamps can be problematic when subsecond accuracy is\n+   needed.\n+  </li>\n+  <li>\n+   Civil time was not based on atomic time before 1972, and we don't\n+   know the history of earth's rotation accurately enough to map SI\n+   seconds to historical solar time to more than about one-hour\n+   accuracy.  See: Stephenson FR, Morrison LV, Hohenkerk CY.\n+   <a href=\"http://dx.doi.org/10.1098/rspa.2016.0404\">Measurement\n+   of the Earth's rotation: 720 BC to AD 2015</a>.\n+   <cite>Proc Royal Soc A</cite>. 2016 Dec 7;472:20160404.\n+   Also see: Espenak F. <a\n+   href=\"https://eclipse.gsfc.nasa.gov/SEhelp/uncertainty2004.html\">Uncertainty\n+   in Delta T (ΔT)</a>.\n+  </li>\n+  <li>\n+   The relationship between POSIX time (that is, UTC but ignoring leap\n+   seconds) and UTC is not agreed upon after 1972.  Although the POSIX\n+   clock officially stops during an inserted leap second, at least one\n+   proposed standard has it jumping back a second instead; and in\n+   practice POSIX clocks more typically either progress glacially during\n+   a leap second, or are slightly slowed while near a leap second.\n+  </li>\n+  <li>\n+   The tz database does not represent how uncertain its information is.\n+   Ideally it would contain information about when data entries are\n+   incomplete or dicey.  Partial temporal knowledge is a field of\n+   active research, though, and it's not clear how to apply it here.\n+  </li>\n+</ul>\n+<p>\n+In short, many, perhaps most, of the tz database's pre-1970 and future\n+timestamps are either wrong or misleading.  Any attempt to pass the\n+tz database off as the definition of time should be unacceptable to\n+anybody who cares about the facts.  In particular, the tz database's\n+LMT offsets should not be considered meaningful, and should not prompt\n+creation of zones merely because two locations differ in LMT or\n+transitioned to standard time at different dates.\n+</p>\n+  </section>\n+\n+\n+  <section>\n+    <h2 id=\"functions\">Time and date functions</h2>\n+<p>\n+The tz code contains time and date functions that are upwards\n+compatible with those of POSIX.\n+</p>\n+\n+<p>\n+POSIX has the following properties and limitations.\n+</p>\n+<ul>\n+  <li>\n+    <p>\n+\tIn POSIX, time display in a process is controlled by the\n+\tenvironment variable TZ.  Unfortunately, the POSIX TZ string takes\n+\ta form that is hard to describe and is error-prone in practice.\n+\tAlso, POSIX TZ strings can't deal with other (for example, Israeli)\n+\tdaylight saving time rules, or situations where more than two\n+\ttime zone abbreviations are used in an area.\n+    </p>\n+    <p>\n+      The POSIX TZ string takes the following form:\n+    </p>\n+    <p>\n+      <var>stdoffset</var>[<var>dst</var>[<var>offset</var>][<code>,</code><var>date</var>[<code>/</code><var>time</var>]<code>,</code><var>date</var>[<code>/</code><var>time</var>]]]\n+    </p>\n+    <p>\n+\twhere:\n+    <dl>\n+      <dt><var>std</var> and <var>dst</var></dt><dd>\n+\t\tare 3 or more characters specifying the standard\n+\t\tand daylight saving time (DST) zone names.\n+\t\tStarting with POSIX.1-2001, <var>std</var>\n+\t\tand <var>dst</var> may also be\n+\t\tin a quoted form like '<code>&lt;UTC+10&gt;</code>'; this allows\n+\t\t\"<code>+</code>\" and \"<code>-</code>\" in the names.\n+      </dd>\n+      <dt><var>offset</var></dt><dd>\n+\t\tis of the form\n+\t\t'<code>[&plusmn;]<var>hh</var>:[<var>mm</var>[:<var>ss</var>]]</code>'\n+\t\tand specifies the offset west of UT.  '<var>hh</var>'\n+\t\tmay be a single digit; 0&le;<var>hh</var>&le;24.\n+\t\tThe default DST offset is one hour ahead of standard time.\n+      </dd>\n+      <dt><var>date</var>[<code>/</code><var>time</var>]<code>,</code><var>date</var>[<code>/</code><var>time</var>]</dt><dd>\n+\t\tspecifies the beginning and end of DST.  If this is absent,\n+\t\tthe system supplies its own rules for DST, and these can\n+\t\tdiffer from year to year; typically US DST rules are used.\n+      </dd>\n+      <dt><var>time</var></dt><dd>\n+\t\ttakes the form\n+\t\t'<var>hh</var><code>:</code>[<var>mm</var>[<code>:</code><var>ss</var>]]'\n+\t\tand defaults to 02:00.\n+\t\tThis is the same format as the offset, except that a\n+\t\tleading '<code>+</code>' or '<code>-</code>' is not allowed.\n+      </dd>\n+      <dt><var>date</var></dt><dd>\n+\t\ttakes one of the following forms:\n+\t<dl>\n+\t  <dt>J<var>n</var> (1&le;<var>n</var>&le;365)</dt><dd>\n+\t\t\torigin-1 day number not counting February 29\n+          </dd>\n+\t  <dt><var>n</var> (0&le;<var>n</var>&le;365)</dt><dd>\n+\t\t\torigin-0 day number counting February 29 if present\n+          </dd>\n+\t  <dt><code>M</code><var>m</var><code>.</code><var>n</var><code>.</code><var>d</var> (0[Sunday]&le;<var>d</var>&le;6[Saturday], 1&le;<var>n</var>&le;5, 1&le;<var>m</var>&le;12)</dt><dd>\n+\t\t\tfor the <var>d</var>th day of\n+\t\t\tweek <var>n</var> of month <var>m</var> of the\n+\t\t\tyear, where week 1 is the first week in which\n+\t\t\tday <var>d</var> appears, and '<code>5</code>'\n+\t\t\tstands for the last week in which\n+\t\t\tday <var>d</var> appears\n+\t\t\t(which may be either the 4th or 5th week).\n+\t\t\tTypically, this is the only useful form;\n+\t\t\tthe <var>n</var>\n+\t\t\tand <code>J</code><var>n</var> forms are\n+\t\t\trarely used.\n+\t  </dd>\n+</dl>\n+</dd>\n+</dl>\n+\tHere is an example POSIX TZ string for New Zealand after 2007.\n+\tIt says that standard time (NZST) is 12 hours ahead of UTC,\n+\tand that daylight saving time (NZDT) is observed from September's\n+\tlast Sunday at 02:00 until April's first Sunday at 03:00:\n+\n+        <pre><code>TZ='NZST-12NZDT,M9.5.0,M4.1.0/3'</code></pre>\n+\n+\tThis POSIX TZ string is hard to remember, and mishandles some\n+\ttimestamps before 2008.  With this package you can use this\n+\tinstead:\n+\n+\t<pre><code>TZ='Pacific/Auckland'</code></pre>\n+  </li>\n+  <li>\n+\tPOSIX does not define the exact meaning of TZ values like\n+\t\"<code>EST5EDT</code>\".\n+\tTypically the current US DST rules are used to interpret such values,\n+\tbut this means that the US DST rules are compiled into each program\n+\tthat does time conversion.  This means that when US time conversion\n+\trules change (as in the United States in 1987), all programs that\n+\tdo time conversion must be recompiled to ensure proper results.\n+  </li>\n+  <li>\n+\tThe TZ environment variable is process-global, which makes it hard\n+\tto write efficient, thread-safe applications that need access\n+\tto multiple time zones.\n+  </li>\n+  <li>\n+\tIn POSIX, there's no tamper-proof way for a process to learn the\n+\tsystem's best idea of local wall clock.  (This is important for\n+\tapplications that an administrator wants used only at certain\n+\ttimes &ndash;\n+\twithout regard to whether the user has fiddled the TZ environment\n+\tvariable.  While an administrator can \"do everything in UTC\" to get\n+\taround the problem, doing so is inconvenient and precludes handling\n+\tdaylight saving time shifts - as might be required to limit phone\n+\tcalls to off-peak hours.)\n+  </li>\n+  <li>\n+\tPOSIX provides no convenient and efficient way to determine the UT\n+\toffset and time zone abbreviation of arbitrary timestamps,\n+\tparticularly for time zone settings that do not fit into the\n+\tPOSIX model.\n+  </li>\n+  <li>\n+\tPOSIX requires that systems ignore leap seconds.\n+  </li>\n+  <li>\n+\tThe tz code attempts to support all the <code>time_t</code>\n+\timplementations allowed by POSIX.  The <code>time_t</code>\n+\ttype represents a nonnegative count of\n+\tseconds since 1970-01-01 00:00:00 UTC, ignoring leap seconds.\n+\tIn practice, <code>time_t</code> is usually a signed 64- or\n+\t32-bit integer; 32-bit signed <code>time_t</code> values stop\n+\tworking after 2038-01-19 03:14:07 UTC, so\n+\tnew implementations these days typically use a signed 64-bit integer.\n+\tUnsigned 32-bit integers are used on one or two platforms,\n+\tand 36-bit and 40-bit integers are also used occasionally.\n+\tAlthough earlier POSIX versions allowed <code>time_t</code> to be a\n+\tfloating-point type, this was not supported by any practical\n+\tsystems, and POSIX.1-2013 and the tz code both\n+\trequire <code>time_t</code>\n+\tto be an integer type.\n+  </li>\n+</ul>\n+<p>\n+These are the extensions that have been made to the POSIX functions:\n+</p>\n+<ul>\n+  <li>\n+    <p>\n+\tThe TZ environment variable is used in generating the name of a file\n+\tfrom which time zone information is read (or is interpreted a la\n+\tPOSIX); TZ is no longer constrained to be a three-letter time zone\n+\tname followed by a number of hours and an optional three-letter\n+\tdaylight time zone name.  The daylight saving time rules to be used\n+\tfor a particular time zone are encoded in the time zone file;\n+\tthe format of the file allows U.S., Australian, and other rules to be\n+\tencoded, and allows for situations where more than two time zone\n+\tabbreviations are used.\n+    </p>\n+    <p>\n+\tIt was recognized that allowing the TZ environment variable to\n+\ttake on values such as '<code>America/New_York</code>' might\n+\tcause \"old\" programs\n+\t(that expect TZ to have a certain form) to operate incorrectly;\n+\tconsideration was given to using some other environment variable\n+\t(for example, TIMEZONE) to hold the string used to generate the\n+\ttime zone information file name.  In the end, however, it was decided\n+\tto continue using TZ: it is widely used for time zone purposes;\n+\tseparately maintaining both TZ and TIMEZONE seemed a nuisance;\n+\tand systems where \"new\" forms of TZ might cause problems can simply\n+\tuse TZ values such as \"<code>EST5EDT</code>\" which can be used both by\n+\t\"new\" programs (a la POSIX) and \"old\" programs (as zone names and\n+\toffsets).\n+    </p>\n+</li>\n+<li>\n+\tThe code supports platforms with a UT offset member\n+\tin <code>struct tm</code>,\n+\te.g., <code>tm_gmtoff</code>.\n+</li>\n+<li>\n+\tThe code supports platforms with a time zone abbreviation member in\n+\t<code>struct tm</code>, e.g., <code>tm_zone</code>.\n+</li>\n+<li>\n+\tSince the TZ environment variable can now be used to control time\n+\tconversion, the <code>daylight</code>\n+\tand <code>timezone</code> variables are no longer needed.\n+\t(These variables are defined and set by <code>tzset</code>;\n+\thowever, their values will not be used\n+\tby <code>localtime</code>.)\n+</li>\n+<li>\n+\tFunctions <code>tzalloc</code>, <code>tzfree</code>,\n+\t<code>localtime_rz</code>, and <code>mktime_z</code> for\n+\tmore-efficient thread-safe applications that need to use\n+\tmultiple time zones.  The <code>tzalloc</code>\n+\tand <code>tzfree</code> functions allocate and free objects of\n+\ttype <code>timezone_t</code>, and <code>localtime_rz</code>\n+\tand <code>mktime_z</code> are like <code>localtime_r</code>\n+\tand <code>mktime</code> with an extra\n+\t<code>timezone_t</code> argument.  The functions were inspired\n+\tby NetBSD.\n+</li>\n+<li>\n+\tA function <code>tzsetwall</code> has been added to arrange\n+\tfor the system's\n+\tbest approximation to local wall clock time to be delivered by\n+\tsubsequent calls to <code>localtime</code>.  Source code for portable\n+\tapplications that \"must\" run on local wall clock time should call\n+\t<code>tzsetwall</code>; if such code is moved to \"old\" systems that don't\n+\tprovide tzsetwall, you won't be able to generate an executable program.\n+\t(These time zone functions also arrange for local wall clock time to be\n+\tused if tzset is called &ndash; directly or indirectly &ndash;\n+\tand there's no TZ\n+\tenvironment variable; portable applications should not, however, rely\n+\ton this behavior since it's not the way SVR2 systems behave.)\n+</li>\n+<li>\n+\tNegative <code>time_t</code> values are supported, on systems\n+\twhere <code>time_t</code> is signed.\n+</li>\n+<li>\n+\tThese functions can account for leap seconds, thanks to Bradley White.\n+</li>\n+</ul>\n+<p>\n+Points of interest to folks with other systems:\n+</p>\n+<ul>\n+  <li>\n+\tCode compatible with this package is already part of many platforms,\n+\tincluding GNU/Linux, Android, the BSDs, Chromium OS, Cygwin, AIX, iOS,\n+\tBlackBery 10, macOS, Microsoft Windows, OpenVMS, and Solaris.\n+\tOn such hosts, the primary use of this package\n+\tis to update obsolete time zone rule tables.\n+\tTo do this, you may need to compile the time zone compiler\n+\t'<code>zic</code>' supplied with this package instead of using\n+\tthe system '<code>zic</code>', since the format\n+\tof <code>zic</code>'s input is occasionally extended, and a\n+\tplatform may still be shipping an older <code>zic</code>.\n+  </li>\n+  <li>\n+\tThe UNIX Version 7 <code>timezone</code> function is not\n+\tpresent in this package;\n+\tit's impossible to reliably map timezone's arguments (a \"minutes west\n+\tof GMT\" value and a \"daylight saving time in effect\" flag) to a\n+\ttime zone abbreviation, and we refuse to guess.\n+\tPrograms that in the past used the timezone function may now examine\n+\t<code>localtime(&amp;clock)-&gt;tm_zone</code>\n+\t(if <code>TM_ZONE</code> is defined) or\n+\t<code>tzname[localtime(&amp;clock)-&gt;tm_isdst]</code>\n+\t(if <code>HAVE_TZNAME</code> is defined)\n+\tto learn the correct time zone abbreviation to use.\n+  </li>\n+  <li>\n+\tThe 4.2BSD <code>gettimeofday</code> function is not used in\n+\tthis package.\n+\tThis formerly let users obtain the current UTC offset and DST flag,\n+\tbut this functionality was removed in later versions of BSD.\n+  </li>\n+  <li>\n+\tIn SVR2, time conversion fails for near-minimum or near-maximum\n+\t<code>time_t</code> values when doing conversions for places\n+\tthat don't use UT.\n+\tThis package takes care to do these conversions correctly.\n+\tA comment in the source code tells how to get compatibly wrong\n+\tresults.\n+  </li>\n+</ul>\n+<p>\n+The functions that are conditionally compiled\n+if <code>STD_INSPIRED</code> is defined\n+should, at this point, be looked on primarily as food for thought.  They are\n+not in any sense \"standard compatible\" &ndash; some are not, in fact,\n+specified in <em>any</em> standard.  They do, however, represent responses of\n+various authors to\n+standardization proposals.\n+</p>\n+\n+<p>\n+Other time conversion proposals, in particular the one developed by folks at\n+Hewlett Packard, offer a wider selection of functions that provide capabilities\n+beyond those provided here.  The absence of such functions from this package\n+is not meant to discourage the development, standardization, or use of such\n+functions.  Rather, their absence reflects the decision to make this package\n+contain valid extensions to POSIX, to ensure its broad acceptability.  If\n+more powerful time conversion functions can be standardized, so much the\n+better.\n+</p>\n+  </section>\n+\n+\n+  <section>\n+    <h2 id=\"stability\">Interface stability</h2>\n+<p>\n+The tz code and data supply the following interfaces:\n+</p>\n+<ul>\n+  <li>\n+   A set of zone names as per \"<a href=\"#naming\">Names of time zone\n+   rules</a>\" above.\n+  </li>\n+  <li>\n+   Library functions described in \"<a href=\"#functions\">Time and date\n+   functions</a>\" above.\n+  </li>\n+  <li>\n+   The programs <code>tzselect</code>, <code>zdump</code>,\n+   and <code>zic</code>, documented in their man pages.\n+  </li>\n+  <li>\n+   The format of <code>zic</code> input files, documented in\n+   the <code>zic</code> man page.\n+  </li>\n+  <li>\n+   The format of <code>zic</code> output files, documented in\n+   the <code>tzfile</code> man page.\n+  </li>\n+  <li>\n+   The format of zone table files, documented in <code>zone1970.tab</code>.\n+  </li>\n+  <li>\n+   The format of the country code file, documented in <code>iso3166.tab</code>.\n+  </li>\n+  <li>\n+   The version number of the code and data, as the first line of\n+   the text file '<code>version</code>' in each release.\n+  </li>\n+</ul>\n+<p>\n+Interface changes in a release attempt to preserve compatibility with\n+recent releases.  For example, tz data files typically do not rely on\n+recently-added <code>zic</code> features, so that users can run\n+older <code>zic</code> versions to process newer data\n+files.  <a href=\"tz-link.htm\">Sources for time zone and daylight\n+saving time data</a> describes how\n+releases are tagged and distributed.\n+</p>\n+\n+<p>\n+Interfaces not listed above are less stable.  For example, users\n+should not rely on particular UT offsets or abbreviations for\n+timestamps, as data entries are often based on guesswork and these\n+guesses may be corrected or improved.\n+</p>\n+  </section>\n+\n+\n+  <section>\n+    <h2 id=\"calendar\">Calendrical issues</h2>\n+<p>\n+Calendrical issues are a bit out of scope for a time zone database,\n+but they indicate the sort of problems that we would run into if we\n+extended the time zone database further into the past.  An excellent\n+resource in this area is Nachum Dershowitz and Edward M. Reingold,\n+<cite><a href=\"https://www.cs.tau.ac.il/~nachum/calendar-book/third-edition/\">Calendrical\n+Calculations: Third Edition</a></cite>, Cambridge University Press (2008).\n+Other information and sources are given in the file '<samp>calendars</samp>'\n+in the tz distribution.  They sometimes disagree.\n+</p>\n+  </section>\n+\n+\n+  <section>\n+    <h2 id=\"planets\">Time and time zones on other planets</h2>\n+<p>\n+Some people's work schedules use Mars time.  Jet Propulsion Laboratory\n+(JPL) coordinators have kept Mars time on and off at least since 1997\n+for the Mars Pathfinder mission.  Some of their family members have\n+also adapted to Mars time.  Dozens of special Mars watches were built\n+for JPL workers who kept Mars time during the Mars Exploration\n+Rovers mission (2004).  These timepieces look like normal Seikos and\n+Citizens but use Mars seconds rather than terrestrial seconds.\n+</p>\n+\n+<p>\n+A Mars solar day is called a \"sol\" and has a mean period equal to\n+about 24 hours 39 minutes 35.244 seconds in terrestrial time.  It is\n+divided into a conventional 24-hour clock, so each Mars second equals\n+about 1.02749125 terrestrial seconds.\n+</p>\n+\n+<p>\n+The prime meridian of Mars goes through the center of the crater\n+Airy-0, named in honor of the British astronomer who built the\n+Greenwich telescope that defines Earth's prime meridian.  Mean solar\n+time on the Mars prime meridian is called Mars Coordinated Time (MTC).\n+</p>\n+\n+<p>\n+Each landed mission on Mars has adopted a different reference for\n+solar time keeping, so there is no real standard for Mars time zones.\n+For example, the Mars Exploration Rover project (2004) defined two\n+time zones \"Local Solar Time A\" and \"Local Solar Time B\" for its two\n+missions, each zone designed so that its time equals local true solar\n+time at approximately the middle of the nominal mission.  Such a \"time\n+zone\" is not particularly suited for any application other than the\n+mission itself.\n+</p>\n+\n+<p>\n+Many calendars have been proposed for Mars, but none have achieved\n+wide acceptance.  Astronomers often use Mars Sol Date (MSD) which is a\n+sequential count of Mars solar days elapsed since about 1873-12-29\n+12:00 GMT.\n+</p>\n+\n+<p>\n+In our solar system, Mars is the planet with time and calendar most\n+like Earth's.  On other planets, Sun-based time and calendars would\n+work quite differently.  For example, although Mercury's sidereal\n+rotation period is 58.646 Earth days, Mercury revolves around the Sun\n+so rapidly that an observer on Mercury's equator would see a sunrise\n+only every 175.97 Earth days, i.e., a Mercury year is 0.5 of a Mercury\n+day.  Venus is more complicated, partly because its rotation is\n+slightly retrograde: its year is 1.92 of its days.  Gas giants like\n+Jupiter are trickier still, as their polar and equatorial regions\n+rotate at different rates, so that the length of a day depends on\n+latitude.  This effect is most pronounced on Neptune, where the day is\n+about 12 hours at the poles and 18 hours at the equator.\n+</p>\n+\n+<p>\n+Although the tz database does not support time on other planets, it is\n+documented here in the hopes that support will be added eventually.","path":"theory.html","position":995,"original_position":995,"commit_id":"d8f22cabe1834754e0a58e6cb1ec91068fe6ee6a","original_commit_id":"d8f22cabe1834754e0a58e6cb1ec91068fe6ee6a","user":{"login":"eah13","id":1702745,"avatar_url":"https://avatars3.githubusercontent.com/u/1702745?v=4","gravatar_id":"","url":"https://api.github.com/users/eah13","html_url":"https://github.com/eah13","followers_url":"https://api.github.com/users/eah13/followers","following_url":"https://api.github.com/users/eah13/following{/other_user}","gists_url":"https://api.github.com/users/eah13/gists{/gist_id}","starred_url":"https://api.github.com/users/eah13/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eah13/subscriptions","organizations_url":"https://api.github.com/users/eah13/orgs","repos_url":"https://api.github.com/users/eah13/repos","events_url":"https://api.github.com/users/eah13/events{/privacy}","received_events_url":"https://api.github.com/users/eah13/received_events","type":"User","site_admin":false},"body":"Aspirations of interplanetary extension","created_at":"2018-04-20T19:27:55Z","updated_at":"2018-04-20T19:27:55Z","html_url":"https://github.com/eah13/tzbd/pull/1#discussion_r183148223","pull_request_url":"https://api.github.com/repos/eah13/tzbd/pulls/1","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/eah13/tzbd/pulls/comments/183148223"},"html":{"href":"https://github.com/eah13/tzbd/pull/1#discussion_r183148223"},"pull_request":{"href":"https://api.github.com/repos/eah13/tzbd/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/eah13/tzbd/pulls/1","id":183144617,"html_url":"https://github.com/eah13/tzbd/pull/1","diff_url":"https://github.com/eah13/tzbd/pull/1.diff","patch_url":"https://github.com/eah13/tzbd/pull/1.patch","issue_url":"https://api.github.com/repos/eah13/tzbd/issues/1","number":1,"state":"open","locked":false,"title":"Files for discussion","user":{"login":"eah13","id":1702745,"avatar_url":"https://avatars3.githubusercontent.com/u/1702745?v=4","gravatar_id":"","url":"https://api.github.com/users/eah13","html_url":"https://github.com/eah13","followers_url":"https://api.github.com/users/eah13/followers","following_url":"https://api.github.com/users/eah13/following{/other_user}","gists_url":"https://api.github.com/users/eah13/gists{/gist_id}","starred_url":"https://api.github.com/users/eah13/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eah13/subscriptions","organizations_url":"https://api.github.com/users/eah13/orgs","repos_url":"https://api.github.com/users/eah13/repos","events_url":"https://api.github.com/users/eah13/events{/privacy}","received_events_url":"https://api.github.com/users/eah13/received_events","type":"User","site_admin":false},"body":"Click on the Files Changed tab to see all files in the tzdatabase.  Click the `+` icon next to a file to comment.\r\n\r\nFor ease of use, files are served at http://elliotthauser.com/tzbd/[filename].  Highlights:\r\n\r\n* [theory.html](http://elliotthauser.com/tzbd/theory.html) - a description of the design philosophy and pragmatics of the database.\r\n","created_at":"2018-04-20T19:01:12Z","updated_at":"2018-04-20T19:27:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5cd529bb6c4c1ae7aa71a68f95ea5c5e4a6e4adb","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/eah13/tzbd/pulls/1/commits","review_comments_url":"https://api.github.com/repos/eah13/tzbd/pulls/1/comments","review_comment_url":"https://api.github.com/repos/eah13/tzbd/pulls/comments{/number}","comments_url":"https://api.github.com/repos/eah13/tzbd/issues/1/comments","statuses_url":"https://api.github.com/repos/eah13/tzbd/statuses/d8f22cabe1834754e0a58e6cb1ec91068fe6ee6a","head":{"label":"eah13:for-comment","ref":"for-comment","sha":"d8f22cabe1834754e0a58e6cb1ec91068fe6ee6a","user":{"login":"eah13","id":1702745,"avatar_url":"https://avatars3.githubusercontent.com/u/1702745?v=4","gravatar_id":"","url":"https://api.github.com/users/eah13","html_url":"https://github.com/eah13","followers_url":"https://api.github.com/users/eah13/followers","following_url":"https://api.github.com/users/eah13/following{/other_user}","gists_url":"https://api.github.com/users/eah13/gists{/gist_id}","starred_url":"https://api.github.com/users/eah13/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eah13/subscriptions","organizations_url":"https://api.github.com/users/eah13/orgs","repos_url":"https://api.github.com/users/eah13/repos","events_url":"https://api.github.com/users/eah13/events{/privacy}","received_events_url":"https://api.github.com/users/eah13/received_events","type":"User","site_admin":false},"repo":{"id":130402685,"name":"tzbd","full_name":"eah13/tzbd","owner":{"login":"eah13","id":1702745,"avatar_url":"https://avatars3.githubusercontent.com/u/1702745?v=4","gravatar_id":"","url":"https://api.github.com/users/eah13","html_url":"https://github.com/eah13","followers_url":"https://api.github.com/users/eah13/followers","following_url":"https://api.github.com/users/eah13/following{/other_user}","gists_url":"https://api.github.com/users/eah13/gists{/gist_id}","starred_url":"https://api.github.com/users/eah13/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eah13/subscriptions","organizations_url":"https://api.github.com/users/eah13/orgs","repos_url":"https://api.github.com/users/eah13/repos","events_url":"https://api.github.com/users/eah13/events{/privacy}","received_events_url":"https://api.github.com/users/eah13/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/eah13/tzbd","description":"IANA time zone database files","fork":false,"url":"https://api.github.com/repos/eah13/tzbd","forks_url":"https://api.github.com/repos/eah13/tzbd/forks","keys_url":"https://api.github.com/repos/eah13/tzbd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eah13/tzbd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eah13/tzbd/teams","hooks_url":"https://api.github.com/repos/eah13/tzbd/hooks","issue_events_url":"https://api.github.com/repos/eah13/tzbd/issues/events{/number}","events_url":"https://api.github.com/repos/eah13/tzbd/events","assignees_url":"https://api.github.com/repos/eah13/tzbd/assignees{/user}","branches_url":"https://api.github.com/repos/eah13/tzbd/branches{/branch}","tags_url":"https://api.github.com/repos/eah13/tzbd/tags","blobs_url":"https://api.github.com/repos/eah13/tzbd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eah13/tzbd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eah13/tzbd/git/refs{/sha}","trees_url":"https://api.github.com/repos/eah13/tzbd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eah13/tzbd/statuses/{sha}","languages_url":"https://api.github.com/repos/eah13/tzbd/languages","stargazers_url":"https://api.github.com/repos/eah13/tzbd/stargazers","contributors_url":"https://api.github.com/repos/eah13/tzbd/contributors","subscribers_url":"https://api.github.com/repos/eah13/tzbd/subscribers","subscription_url":"https://api.github.com/repos/eah13/tzbd/subscription","commits_url":"https://api.github.com/repos/eah13/tzbd/commits{/sha}","git_commits_url":"https://api.github.com/repos/eah13/tzbd/git/commits{/sha}","comments_url":"https://api.github.com/repos/eah13/tzbd/comments{/number}","issue_comment_url":"https://api.github.com/repos/eah13/tzbd/issues/comments{/number}","contents_url":"https://api.github.com/repos/eah13/tzbd/contents/{+path}","compare_url":"https://api.github.com/repos/eah13/tzbd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eah13/tzbd/merges","archive_url":"https://api.github.com/repos/eah13/tzbd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eah13/tzbd/downloads","issues_url":"https://api.github.com/repos/eah13/tzbd/issues{/number}","pulls_url":"https://api.github.com/repos/eah13/tzbd/pulls{/number}","milestones_url":"https://api.github.com/repos/eah13/tzbd/milestones{/number}","notifications_url":"https://api.github.com/repos/eah13/tzbd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eah13/tzbd/labels{/name}","releases_url":"https://api.github.com/repos/eah13/tzbd/releases{/id}","deployments_url":"https://api.github.com/repos/eah13/tzbd/deployments","created_at":"2018-04-20T18:57:40Z","updated_at":"2018-04-20T18:59:05Z","pushed_at":"2018-04-20T19:18:09Z","git_url":"git://github.com/eah13/tzbd.git","ssh_url":"git@github.com:eah13/tzbd.git","clone_url":"https://github.com/eah13/tzbd.git","svn_url":"https://github.com/eah13/tzbd","homepage":null,"size":0,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"eah13:master","ref":"master","sha":"317bb0e459b3d884502d0ccdb52ff71f4abdd3d0","user":{"login":"eah13","id":1702745,"avatar_url":"https://avatars3.githubusercontent.com/u/1702745?v=4","gravatar_id":"","url":"https://api.github.com/users/eah13","html_url":"https://github.com/eah13","followers_url":"https://api.github.com/users/eah13/followers","following_url":"https://api.github.com/users/eah13/following{/other_user}","gists_url":"https://api.github.com/users/eah13/gists{/gist_id}","starred_url":"https://api.github.com/users/eah13/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eah13/subscriptions","organizations_url":"https://api.github.com/users/eah13/orgs","repos_url":"https://api.github.com/users/eah13/repos","events_url":"https://api.github.com/users/eah13/events{/privacy}","received_events_url":"https://api.github.com/users/eah13/received_events","type":"User","site_admin":false},"repo":{"id":130402685,"name":"tzbd","full_name":"eah13/tzbd","owner":{"login":"eah13","id":1702745,"avatar_url":"https://avatars3.githubusercontent.com/u/1702745?v=4","gravatar_id":"","url":"https://api.github.com/users/eah13","html_url":"https://github.com/eah13","followers_url":"https://api.github.com/users/eah13/followers","following_url":"https://api.github.com/users/eah13/following{/other_user}","gists_url":"https://api.github.com/users/eah13/gists{/gist_id}","starred_url":"https://api.github.com/users/eah13/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eah13/subscriptions","organizations_url":"https://api.github.com/users/eah13/orgs","repos_url":"https://api.github.com/users/eah13/repos","events_url":"https://api.github.com/users/eah13/events{/privacy}","received_events_url":"https://api.github.com/users/eah13/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/eah13/tzbd","description":"IANA time zone database files","fork":false,"url":"https://api.github.com/repos/eah13/tzbd","forks_url":"https://api.github.com/repos/eah13/tzbd/forks","keys_url":"https://api.github.com/repos/eah13/tzbd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eah13/tzbd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eah13/tzbd/teams","hooks_url":"https://api.github.com/repos/eah13/tzbd/hooks","issue_events_url":"https://api.github.com/repos/eah13/tzbd/issues/events{/number}","events_url":"https://api.github.com/repos/eah13/tzbd/events","assignees_url":"https://api.github.com/repos/eah13/tzbd/assignees{/user}","branches_url":"https://api.github.com/repos/eah13/tzbd/branches{/branch}","tags_url":"https://api.github.com/repos/eah13/tzbd/tags","blobs_url":"https://api.github.com/repos/eah13/tzbd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eah13/tzbd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eah13/tzbd/git/refs{/sha}","trees_url":"https://api.github.com/repos/eah13/tzbd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eah13/tzbd/statuses/{sha}","languages_url":"https://api.github.com/repos/eah13/tzbd/languages","stargazers_url":"https://api.github.com/repos/eah13/tzbd/stargazers","contributors_url":"https://api.github.com/repos/eah13/tzbd/contributors","subscribers_url":"https://api.github.com/repos/eah13/tzbd/subscribers","subscription_url":"https://api.github.com/repos/eah13/tzbd/subscription","commits_url":"https://api.github.com/repos/eah13/tzbd/commits{/sha}","git_commits_url":"https://api.github.com/repos/eah13/tzbd/git/commits{/sha}","comments_url":"https://api.github.com/repos/eah13/tzbd/comments{/number}","issue_comment_url":"https://api.github.com/repos/eah13/tzbd/issues/comments{/number}","contents_url":"https://api.github.com/repos/eah13/tzbd/contents/{+path}","compare_url":"https://api.github.com/repos/eah13/tzbd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eah13/tzbd/merges","archive_url":"https://api.github.com/repos/eah13/tzbd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eah13/tzbd/downloads","issues_url":"https://api.github.com/repos/eah13/tzbd/issues{/number}","pulls_url":"https://api.github.com/repos/eah13/tzbd/pulls{/number}","milestones_url":"https://api.github.com/repos/eah13/tzbd/milestones{/number}","notifications_url":"https://api.github.com/repos/eah13/tzbd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eah13/tzbd/labels{/name}","releases_url":"https://api.github.com/repos/eah13/tzbd/releases{/id}","deployments_url":"https://api.github.com/repos/eah13/tzbd/deployments","created_at":"2018-04-20T18:57:40Z","updated_at":"2018-04-20T18:59:05Z","pushed_at":"2018-04-20T19:18:09Z","git_url":"git://github.com/eah13/tzbd.git","ssh_url":"git@github.com:eah13/tzbd.git","clone_url":"https://github.com/eah13/tzbd.git","svn_url":"https://github.com/eah13/tzbd","homepage":null,"size":0,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/eah13/tzbd/pulls/1"},"html":{"href":"https://github.com/eah13/tzbd/pull/1"},"issue":{"href":"https://api.github.com/repos/eah13/tzbd/issues/1"},"comments":{"href":"https://api.github.com/repos/eah13/tzbd/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/eah13/tzbd/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/eah13/tzbd/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/eah13/tzbd/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/eah13/tzbd/statuses/d8f22cabe1834754e0a58e6cb1ec91068fe6ee6a"}},"author_association":"OWNER"}}
{"actor":{"display_login":"eah13"}}