Other tz file readers had problems with the new pre1970 file, so remove it and related changes. To recover the pre-1970 data, instead change pre-1970 Zone entries in other files back to what they were. Perhaps we'll try to find a better way someday. * .gitignore: Remove back-pre1970. * Makefile (BACKWARD): Remove. All uses changed back to 'backward'. (AWK_SCRIPTS): Remove back-pre1970.awk. (back-pre1970): Remove. (clean_misc): Don't rm back-pre1970. (check_public): Remove special case for pre1970. * back-pre1970.awk, pre1970: Remove. * backward (America/Anguilla, America/Antigua, America/Aruba) (America/Atikokan, America/Blanc-Sablon, America/Cayman) (America/Creston, America/Curacao, America/Dominica, America/Grenada) (America/Guadeloupe, America/Montreal, America/Montserrat) (America/Nassau, America/Port_of_Spain, America/St_Kitts) (America/St_Lucia, America/St_Thomas, America/St_Vincent) (America/Tortola): Remove, as these are zones again. (America/Coral_Harbour, America/Kralendijk, America/Lower_Princes) (America/Marigot, America/St_Barthelemy, America/Virgin): Revert to previous links. * northamerica (Mont, America/Blanc-Sablon, America/Montreal) (America/Atikokan, America/Creston, America/Anguilla, America/Antigua) (Bahamas, America/Nassau, America/Cayman, America/Dominica) (America/Grenada, America/Guadeloupe, America/Montserrat) (America/St_Kitts, America/St_Lucia, America/St_Vincent) (America/Tortola, America/St_Thomas): * southamerica (America/Aruba, America/Curacao, America/Port_of_Spain): Restore these rules and zones. * .gitignore: Add back-pre1970. --- .gitignore | 1 - Makefile | 34 ++----- back-pre1970.awk | 18 ---- backward | 32 ++---- northamerica | 140 ++++++++++++++++++++------ pre1970 | 291 ------------------------------------------------------- southamerica | 20 +++- 7 files changed, 140 insertions(+), 396 deletions(-) delete mode 100644 back-pre1970.awk delete mode 100644 pre1970 diff --git a/.gitignore b/.gitignore index 28b1bc9..18dbbcc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ *.txt *~ ChangeLog -back-pre1970 date leapseconds time.tab diff --git a/Makefile b/Makefile index ffddb08..e439055 100644 --- a/Makefile +++ b/Makefile @@ -49,22 +49,6 @@ POSIXRULES= America/New_York ZONETABTYPE= zone -# How to support obsolescent time zones in a backward-compatible way. -# This variable affects only pre-1970 time stamps, on hosts that support them. -# It has two possible values, 'backward' and 'pre1970 back-pre1970'. -# -# 'backward' is the traditional approach, and is simpler and more efficient; -# it is designed to generate one zone for each region where clocks have agreed -# since 1970. -# -# 'pre1970 back-pre1970' can generate more than one zone in that situation, -# which means it can preserve a bit of pre-1970 data that 'backward' does not; -# almost all pre-1970 data is missing, though, so don't get your hopes up. -# -# Sometimes 'backward' is more-compatible with earlier versions of this database, -# and sometimes 'pre1970 back-pre1970' is; it depends on the situation. -BACKWARD= backward - # Also see TZDEFRULESTRING below, which takes effect only # if the time zone files cannot be accessed. @@ -338,7 +322,7 @@ COMMON= Makefile DOCS= README Theory $(MANS) date.1 PRIMARY_YDATA= africa antarctica asia australasia \ europe northamerica southamerica -YDATA= $(PRIMARY_YDATA) pacificnew etcetera $(BACKWARD) +YDATA= $(PRIMARY_YDATA) pacificnew etcetera backward NDATA= systemv factory SDATA= solar87 solar88 solar89 TDATA= $(YDATA) $(NDATA) $(SDATA) @@ -346,10 +330,10 @@ TABDATA= iso3166.tab time.tab zone.tab DATA= $(YDATA) $(NDATA) $(SDATA) $(TABDATA) \ leap-seconds.list yearistype.sh WEB_PAGES= tz-art.htm tz-link.htm -AWK_SCRIPTS= back-pre1970.awk checktab.awk leapseconds.awk zone-time.awk +AWK_SCRIPTS= checktab.awk leapseconds.awk zone-time.awk MISC= usno1988 usno1989 usno1989a usno1995 usno1997 usno1998 \ - $(WEB_PAGES) $(AWK_SCRIPTS) \ - workman.sh zoneinfo2tdf.pl + $(WEB_PAGES) $(AWK_SCRIPTS) workman.sh \ + zoneinfo2tdf.pl ENCHILADA= $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) # And for the benefit of csh users on systems that assume the user @@ -440,9 +424,6 @@ zones: $(REDO) time.tab: $(YDATA) zone.tab zone-time.awk $(AWK) -f zone-time.awk $(YDATA) >$@ -back-pre1970: pre1970 backward - $(AWK) -v pre1970=pre1970 -f $@.awk backward >$@ - $(TZLIB): $(LIBOBJS) -mkdir $(TOPDIR) $(LIBDIR) ar ru $@ $(LIBOBJS) @@ -477,7 +458,7 @@ check_web: $(WEB_PAGES) clean_misc: rm -f core *.o *.out \ - back-pre1970 time.tab \ + time.tab \ date leapseconds tzselect version.h zdump zic yearistype clean: clean_misc rm -f -r tzpublic @@ -509,7 +490,7 @@ set-timestamps: $$cmd || exit; \ done -# The zics below ensure that each non-pre1970 data file can stand on its own. +# The zics below ensure that each data file can stand on its own. # We also do an all-files run to catch links to links. check_public: $(ENCHILADA) @@ -517,8 +498,7 @@ check_public: $(ENCHILADA) make "CFLAGS=$(GCC_DEBUG_FLAGS)" mkdir tzpublic for i in $(TDATA) ; do \ - test $$i = pre1970 || $(zic) -v -d tzpublic $$i 2>&1 \ - || exit; \ + $(zic) -v -d tzpublic $$i 2>&1 || exit; \ done $(zic) -v -d tzpublic $(TDATA) rm -f -r tzpublic diff --git a/back-pre1970.awk b/back-pre1970.awk deleted file mode 100644 index f7c54fc..0000000 --- a/back-pre1970.awk +++ /dev/null @@ -1,18 +0,0 @@ -# Generate 'back-pre1970' from the two input files 'pre1970' and 'backward'. -# The output consists of all lines in 'backward' that are not links to -# files mentioned in 'pre1970'. Think of it as 'backward' minus 'pre1970'. - -# The 'backward' file is the input. -# The awk variable 'pre1970' contains the name of the pre1970 file. - -# This file is in the public domain. - -# Contributed by Paul Eggert. - -BEGIN { - while ((getline <pre1970) == 1) - if ($1 == "Zone") - pre1970_zone[$2] = 1 -} - -! (/^Link/ && pre1970_zone[$3]) { print } diff --git a/backward b/backward index efb5353..561e2ff 100644 --- a/backward +++ b/backward @@ -7,47 +7,27 @@ Link Africa/Asmara Africa/Asmera Link Africa/Bamako Africa/Timbuktu -Link America/Puerto_Rico America/Anguilla -Link America/Puerto_Rico America/Antigua Link America/Argentina/Catamarca America/Argentina/ComodRivadavia -Link America/Puerto_Rico America/Aruba -Link America/Panama America/Atikokan Link America/Adak America/Atka -Link America/Puerto_Rico America/Blanc-Sablon Link America/Argentina/Buenos_Aires America/Buenos_Aires Link America/Argentina/Catamarca America/Catamarca -Link America/Panama America/Cayman -Link America/Panama America/Coral_Harbour +Link America/Atikokan America/Coral_Harbour Link America/Argentina/Cordoba America/Cordoba -Link America/Phoenix America/Creston -Link America/Puerto_Rico America/Curacao -Link America/Puerto_Rico America/Dominica Link America/Tijuana America/Ensenada Link America/Indiana/Indianapolis America/Fort_Wayne -Link America/Puerto_Rico America/Grenada -Link America/Puerto_Rico America/Guadeloupe Link America/Indiana/Indianapolis America/Indianapolis Link America/Argentina/Jujuy America/Jujuy Link America/Indiana/Knox America/Knox_IN -Link America/Puerto_Rico America/Kralendijk +Link America/Curacao America/Kralendijk Link America/Kentucky/Louisville America/Louisville -Link America/Puerto_Rico America/Lower_Princes -Link America/Puerto_Rico America/Marigot +Link America/Curacao America/Lower_Princes +Link America/Guadeloupe America/Marigot Link America/Argentina/Mendoza America/Mendoza -Link America/Toronto America/Montreal -Link America/Puerto_Rico America/Montserrat -Link America/Toronto America/Nassau -Link America/Puerto_Rico America/Port_of_Spain Link America/Rio_Branco America/Porto_Acre Link America/Argentina/Cordoba America/Rosario Link America/Denver America/Shiprock -Link America/Puerto_Rico America/St_Barthelemy -Link America/Puerto_Rico America/St_Kitts -Link America/Puerto_Rico America/St_Lucia -Link America/Puerto_Rico America/St_Thomas -Link America/Puerto_Rico America/St_Vincent -Link America/Puerto_Rico America/Tortola -Link America/Puerto_Rico America/Virgin +Link America/Guadeloupe America/St_Barthelemy +Link America/St_Thomas America/Virgin Link Pacific/Auckland Antarctica/McMurdo Link Pacific/Auckland Antarctica/South_Pole Link Europe/Oslo Arctic/Longyearbyen diff --git a/northamerica b/northamerica index 6210318..418261f 100644 --- a/northamerica +++ b/northamerica @@ -1341,9 +1341,13 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 # Quebec -# From Paul Eggert (2013-08-26): +# From Paul Eggert (2013-08-30): # Since 1970 most of Quebec has been like Toronto. -# See America/Toronto. +# However, because earlier versions of the tz database mistakenly relied on data +# from Shanks & Pottenger saying that Quebec differed from Ontario after 1970, +# a separate entry was created for most of Quebec. We're loath to lose +# its pre-1970 info, even though the tz database is normally limited to +# zones that differ after 1970, so keep this otherwise out-of-scope entry. # Matthews and Vincent (1998) also write that Quebec east of the -63 # meridian is supposed to observe AST, but residents as far east as @@ -1357,7 +1361,50 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 # says this common practice was codified into law as of 2007. # For lack of better info, guess this practice began around 1970, contra to # Shanks & Pottenger who have this region observing AST/ADT. -# See America/Puerto_Rico. +# for post-1970 data America/Puerto_Rico. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Mont 1917 only - Mar 25 2:00 1:00 D +Rule Mont 1917 only - Apr 24 0:00 0 S +Rule Mont 1919 only - Mar 31 2:30 1:00 D +Rule Mont 1919 only - Oct 25 2:30 0 S +Rule Mont 1920 only - May 2 2:30 1:00 D +Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S +Rule Mont 1921 only - May 1 2:00 1:00 D +Rule Mont 1922 only - Apr 30 2:00 1:00 D +Rule Mont 1924 only - May 17 2:00 1:00 D +Rule Mont 1924 1926 - Sep lastSun 2:30 0 S +Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D +# The 1927-to-1937 rules can be expressed more simply as +# Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D +# Rule Mont 1927 1937 - Sep lastSat 24:00 0 S +# The rules below avoid use of 24:00 +# (which pre-1998 versions of zic cannot handle). +Rule Mont 1927 only - May 1 0:00 1:00 D +Rule Mont 1927 1932 - Sep lastSun 0:00 0 S +Rule Mont 1928 1931 - Apr lastSun 0:00 1:00 D +Rule Mont 1932 only - May 1 0:00 1:00 D +Rule Mont 1933 1940 - Apr lastSun 0:00 1:00 D +Rule Mont 1933 only - Oct 1 0:00 0 S +Rule Mont 1934 1939 - Sep lastSun 0:00 0 S +Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D +Rule Mont 1945 1948 - Sep lastSun 2:00 0 S +Rule Mont 1949 1950 - Oct lastSun 2:00 0 S +Rule Mont 1951 1956 - Sep lastSun 2:00 0 S +Rule Mont 1957 1973 - Oct lastSun 2:00 0 S + +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Blanc-Sablon -3:48:28 - LMT 1884 + -4:00 Canada A%sT 1970 + -4:00 - AST +Zone America/Montreal -4:54:16 - LMT 1884 + -5:00 Mont E%sT 1918 + -5:00 Canada E%sT 1919 + -5:00 Mont E%sT 1942 Feb 9 2:00s + -5:00 Canada E%sT 1946 + -5:00 Mont E%sT 1974 + -5:00 Canada E%sT + # Ontario @@ -1423,16 +1470,14 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 # can say for certain that Atikokan has been practicing the current # time keeping since 1952, at least. -# From Paul Eggert (2013-08-26): +# From Paul Eggert (2006-07-17): # Shanks & Pottenger say that Atikokan has agreed with Rainy River # ever since standard time was introduced, but the information from # McKinnon sounds more authoritative. For now, assume that Atikokan # switched to EST immediately after WWII era daylight saving time # ended. This matches the old (less-populous) America/Coral_Harbour # entry since our cutoff date of 1970, so we can move -# America/Coral_Harbour to the 'backward' file. And Atikokan itself -# is the same as America/Panama since 1970, so we can move -# America/Atikokan to the 'backward' file as well. +# America/Coral_Harbour to the 'backward' file. # From Mark Brader (2010-03-06): # @@ -1590,6 +1635,11 @@ Zone America/Rainy_River -6:18:16 - LMT 1895 -6:00 Canada C%sT 1940 Sep 29 -6:00 1:00 CDT 1942 Feb 9 2:00s -6:00 Canada C%sT +Zone America/Atikokan -6:06:28 - LMT 1895 + -6:00 Canada C%sT 1940 Sep 29 + -6:00 1:00 CDT 1942 Feb 9 2:00s + -6:00 Canada C%sT 1945 Sep 30 2:00 + -5:00 - EST # Manitoba @@ -1824,8 +1874,7 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep # period should be PDT rather than MST, but that doesn't seem important enough # (to anyone) to further complicate the rules. -# From Paul Eggert (2013-08-26): -# See America/Phoenix, since Creston has agreed with Phoenix since 1970. +# The transition dates (and times) are guesses. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Vanc 1918 only - Apr 14 2:00 1:00 D @@ -1845,6 +1894,10 @@ Zone America/Dawson_Creek -8:00:56 - LMT 1884 -8:00 Canada P%sT 1947 -8:00 Vanc P%sT 1972 Aug 30 2:00 -7:00 - MST +Zone America/Creston -7:46:04 - LMT 1884 + -7:00 - MST 1916 Oct 1 + -8:00 - PST 1918 Jun 2 + -7:00 - MST # Northwest Territories, Nunavut, Yukon @@ -2495,10 +2548,15 @@ Zone America/Santa_Isabel -7:39:28 - LMT 1922 Jan 1 0:20:32 ############################################################################### # Anguilla -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Anguilla -4:12:16 - LMT 1912 Mar 2 + -4:00 - AST # Antigua and Barbuda -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Antigua -4:07:12 - LMT 1912 Mar 2 + -5:00 - EST 1951 + -4:00 - AST # Bahamas # @@ -2508,8 +2566,14 @@ Zone America/Santa_Isabel -7:39:28 - LMT 1922 Jan 1 0:20:32 # The Bahamas announced about a month ago that they plan to change their DST # rules to sync with the U.S. starting in 2007.... # http://www.jonesbahamas.com/?c=45&a=10412 -# -# See America/Toronto. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S +Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Nassau -5:09:30 - LMT 1912 Mar 2 + -5:00 Bahamas E%sT 1976 + -5:00 US E%sT # Barbados @@ -2559,7 +2623,10 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton -4:00 US A%sT # Cayman Is -# See America/Panama. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown + -5:07:12 - KMT 1912 Feb # Kingston Mean Time + -5:00 - EST # Costa Rica @@ -2805,7 +2872,9 @@ Zone America/Havana -5:29:28 - LMT 1890 -5:00 Cuba C%sT # Dominica -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Dominica -4:05:36 - LMT 1911 Jul 1 0:01 # Roseau + -4:00 - AST # Dominican Republic @@ -2854,10 +2923,15 @@ Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador -6:00 Salv C%sT # Grenada -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Grenada -4:07:00 - LMT 1911 Jul # St George's + -4:00 - AST # Guadeloupe -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe a Pitre + -4:00 - AST +# Use America/Guadeloupe also for St Barthelemy and for St Martin (French part). # Guatemala # @@ -3027,7 +3101,9 @@ Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France # From Paul Eggert (2006-03-22): # In 1995 volcanic eruptions forced evacuation of Plymouth, the capital. # world.gazetteer.com says Cork Hill is the most populous location now. -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill + -4:00 - AST # Nicaragua # @@ -3108,17 +3184,16 @@ Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan -4:00 US A%sT 1946 -4:00 - AST -# St Barthelemy -# See America/Puerto_Rico. - # St Kitts-Nevis -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/St_Kitts -4:10:52 - LMT 1912 Mar 2 # Basseterre + -4:00 - AST # St Lucia -# See America/Puerto_Rico. - -# St Martin (French part) -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/St_Lucia -4:04:00 - LMT 1890 # Castries + -4:04:00 - CMT 1912 # Castries Mean Time + -4:00 - AST # St Pierre and Miquelon # There are too many St Pierres elsewhere, so we'll use `Miquelon'. @@ -3129,7 +3204,10 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre -3:00 Canada PM%sT # St Vincent and the Grenadines -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown + -4:04:56 - KMT 1912 # Kingstown Mean Time + -4:00 - AST # Turks and Caicos # @@ -3163,7 +3241,11 @@ Zone America/Grand_Turk -4:44:32 - LMT 1890 -5:00 TC E%sT # British Virgin Is -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Tortola -4:18:28 - LMT 1911 Jul # Road Town + -4:00 - AST # Virgin Is -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/St_Thomas -4:19:44 - LMT 1911 Jul # Charlotte Amalie + -4:00 - AST diff --git a/pre1970 b/pre1970 deleted file mode 100644 index d8b8f34..0000000 --- a/pre1970 +++ /dev/null @@ -1,291 +0,0 @@ -# Pre-1970 data - -# This file is in the public domain. - -# This file contains zones that were formerly in other source files, -# but were later removed or replaced by backward-compatibility links -# as they differ from other zones only in pre-1970 time stamps. - -# Although the tz database focuses on post-1970 time stamps, these -# entries are retained here as they may be of some use to people -# interested in pre-1970 time stamps, even though they cover only a -# tiny sliver of pre-1970 data and are unreliable for that data. -# Also, these entries can help with backward compatibility with some -# old versions of the tz database. They are incompatible with other -# old versions of the database, though; it depends on which old -# version you're interested in. - -# Entries are sorted by Zone name. Each entry is preceded by the name -# of the country that the entry is in, along with any other commentary -# and rules associated with the entry. Some rules, e.g., 'Canada', -# are defined by other source files; this file is not intended to be -# used without those other files. - -# Zone NAME GMTOFF RULES FORMAT [UNTIL] - -# Mali -# no longer different from Bamako, but too famous to omit -Zone Africa/Timbuktu -0:12:04 - LMT 1912 - 0:00 - GMT - -# Anguilla -Zone America/Anguilla -4:12:16 - LMT 1912 Mar 2 - -4:00 - AST - -# Antigua and Barbuda -Zone America/Antigua -4:07:12 - LMT 1912 Mar 2 - -5:00 - EST 1951 - -4:00 - AST - -# Argentina -# Chubut (CH) -# The name "Comodoro Rivadavia" exceeds the 14-byte POSIX limit. -Zone America/Argentina/ComodRivadavia -4:30:00 - LMT 1894 Oct 31 - -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Mar 3 - -4:00 - WART 1991 Oct 20 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 Jun 1 - -4:00 - WART 2004 Jun 20 - -3:00 - ART - -# Aruba -Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad - -4:30 - ANT 1965 # Netherlands Antilles Time - -4:00 - AST - -# Canada - -Zone America/Atikokan -6:06:28 - LMT 1895 - -6:00 Canada C%sT 1940 Sep 29 - -6:00 1:00 CDT 1942 Feb 9 2:00s - -6:00 Canada C%sT 1945 Sep 30 2:00 - -5:00 - EST - -Zone America/Blanc-Sablon -3:48:28 - LMT 1884 - -4:00 Canada A%sT 1970 - -4:00 - AST - -# Cayman Is -Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown - -5:07:12 - KMT 1912 Feb # Kingston Mean Time - -5:00 - EST - -# Canada -Zone America/Coral_Harbour -5:32:40 - LMT 1884 - -5:00 NT_YK E%sT 1946 - -5:00 - EST - -# Curacao -Zone America/Curacao -4:35:47 - LMT 1912 Feb 12 # Willemstad - -4:30 - ANT 1965 # Netherlands Antilles Time - -4:00 - AST - -# Dominica -Zone America/Dominica -4:05:36 - LMT 1911 Jul 1 0:01 # Roseau - -4:00 - AST - -# Mexico -Zone America/Ensenada -7:46:28 - LMT 1922 Jan 1 0:13:32 - -8:00 - PST 1927 Jun 10 23:00 - -7:00 - MST 1930 Nov 16 - -8:00 - PST 1942 Apr - -7:00 - MST 1949 Jan 14 - -8:00 - PST 1996 - -8:00 Mexico P%sT - -# US -Zone America/Fort_Wayne -5:00 US E%sT 1946 - -5:00 - EST # Always EST as of 1986 - -# Grenada -Zone America/Grenada -4:07:00 - LMT 1911 Jul # St George's - -4:00 - AST - -# Guadeloupe -Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe a Pitre - -4:00 - AST - -# Canada -# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Mont 1917 only - Mar 25 2:00 1:00 D -Rule Mont 1917 only - Apr 24 0:00 0 S -Rule Mont 1919 only - Mar 31 2:30 1:00 D -Rule Mont 1919 only - Oct 25 2:30 0 S -Rule Mont 1920 only - May 2 2:30 1:00 D -Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S -Rule Mont 1921 only - May 1 2:00 1:00 D -Rule Mont 1922 only - Apr 30 2:00 1:00 D -Rule Mont 1924 only - May 17 2:00 1:00 D -Rule Mont 1924 1926 - Sep lastSun 2:30 0 S -Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D -# The 1927-to-1937 rules can be expressed more simply as -# Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D -# Rule Mont 1927 1937 - Sep lastSat 24:00 0 S -# The rules below avoid use of 24:00 -# (which pre-1998 versions of zic cannot handle). -Rule Mont 1927 only - May 1 0:00 1:00 D -Rule Mont 1927 1932 - Sep lastSun 0:00 0 S -Rule Mont 1928 1931 - Apr lastSun 0:00 1:00 D -Rule Mont 1932 only - May 1 0:00 1:00 D -Rule Mont 1933 1940 - Apr lastSun 0:00 1:00 D -Rule Mont 1933 only - Oct 1 0:00 0 S -Rule Mont 1934 1939 - Sep lastSun 0:00 0 S -Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D -Rule Mont 1945 1948 - Sep lastSun 2:00 0 S -Rule Mont 1949 1950 - Oct lastSun 2:00 0 S -Rule Mont 1951 1956 - Sep lastSun 2:00 0 S -Rule Mont 1957 1973 - Oct lastSun 2:00 0 S -# Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone America/Montreal -4:54:16 - LMT 1884 - -5:00 Mont E%sT 1918 - -5:00 Canada E%sT 1919 - -5:00 Mont E%sT 1942 Feb 9 2:00s - -5:00 Canada E%sT 1946 - -5:00 Mont E%sT 1974 - -5:00 Canada E%sT - -# Montserrat -Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill - -4:00 - AST - -# Bahamas -# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S -Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D -# Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone America/Nassau -5:09:30 - LMT 1912 Mar 2 - -5:00 Bahamas E%sT 1976 - -5:00 US E%sT - -# Trinidad and Tobago -Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2 - -4:00 - AST - -# Brazil -# Rio_Branco is too ambiguous, since there's a Rio Branco in Uruguay too. -Zone America/Porto_Acre -4:31:12 - LMT 1914 - -5:00 Brazil AC%sT 1988 Sep 12 - -5:00 - ACT - -# Argentina -# Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC), -# Formosa (FM), La Pampa (LP), Chubut (CH) -Zone America/Rosario -4:02:40 - LMT 1894 Nov - -4:16:44 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Jul - -3:00 - ART 1999 Oct 3 0:00 - -4:00 Arg AR%sT 2000 Mar 3 0:00 - -3:00 - ART - -# St Kitts-Nevis -Zone America/St_Kitts -4:10:52 - LMT 1912 Mar 2 # Basseterre - -4:00 - AST - -# St Lucia -Zone America/St_Lucia -4:04:00 - LMT 1890 # Castries - -4:04:00 - CMT 1912 # Castries Mean Time - -4:00 - AST - -# Virgin Is -Zone America/St_Thomas -4:19:44 - LMT 1911 Jul # Charlotte Amalie - -4:00 - AST - -# St Vincent and the Grenadines -Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown - -4:04:56 - KMT 1912 # Kingstown Mean Time - -4:00 - AST - -# British Virgin Is -Zone America/Tortola -4:18:28 - LMT 1911 Jul # Road Town - -4:00 - AST - -# McMurdo, Ross Island, since 1955-12 -Zone Antarctica/McMurdo 0 - zzz 1956 - 12:00 NZAQ NZ%sT - -# Japan -Zone Asia/Ishigaki 8:16:36 - LMT 1896 - 8:00 - CST - -# Israel -Zone Asia/Tel_Aviv 2:19:04 - LMT 1880 - 2:21 - JMT 1918 - 2:00 Zion I%sT - -# Russia -Zone Asia/Tomsk 5:39:52 - LMT 1924 May 2 - 6:00 - TSK 1957 Mar - 7:00 Russia TS%s 1991 Mar 31 2:00s - 6:00 1:00 TSD 1991 Sep 29 2:00s - 6:00 - TSK 1992 Jan 19 2:00s - 7:00 Russia TS%s - -# Svalbard & Jan Mayen -Zone Atlantic/Jan_Mayen -1:00 - EGT - -# Australia -Zone Australia/Canberra 9:56:32 - LMT 1895 Feb - 10:00 - EST 1917 Jan 1 0:01 - 10:00 Aus EST 1971 Oct 31 2:00 - 10:00 AN EST 1981 Oct 25 2:00 - 10:00 1:00 EST 1982 Apr 4 3:00 - 10:00 AN EST - -# UK -Zone Europe/Belfast -0:23:40 - LMT 1880 Aug 2 - -0:25:21 - DMT 1916 May 21 2:00 # Dublin/Dunsink MT - -0:25:21 1:00 IST 1916 Oct 1 2:00s # Irish Summer Time - 0:00 GB-Eire %s 1968 Oct 27 - 1:00 - BST 1971 Oct 31 2:00u - 0:00 GB-Eire %s 1996 - 0:00 EU GMT/BST - -# Slovenia -Zone Europe/Ljubljana 0:58:04 - LMT 1884 - 1:00 - CET 1941 Apr 18 23:00 - 1:00 C-Eur CE%sT 1945 May 8 2:00s - 1:00 1:00 CEST 1945 Sep 16 2:00s - 1:00 - CET 1982 Nov 27 - 1:00 EU CE%sT - -# Bosnia and Herzegovina -Zone Europe/Sarajevo 1:13:40 - LMT 1884 - 1:00 - CET 1941 Apr 18 23:00 - 1:00 C-Eur CE%sT 1945 May 8 2:00s - 1:00 1:00 CEST 1945 Sep 16 2:00s - 1:00 - CET 1982 Nov 27 - 1:00 EU CE%sT - -# Macedonia -Zone Europe/Skopje 1:25:44 - LMT 1884 - 1:00 - CET 1941 Apr 18 23:00 - 1:00 C-Eur CE%sT 1945 May 8 2:00s - 1:00 1:00 CEST 1945 Sep 16 2:00s - 1:00 - CET 1982 Nov 27 - 1:00 EU CE%sT - -# Moldova -Zone Europe/Tiraspol 1:58:32 - LMT 1880 - 1:55 - CMT 1918 Feb 15 # Chisinau MT - 1:44:24 - BMT 1931 Jul 24 # Bucharest MT - 2:00 Romania EE%sT 1940 Aug 15 - 2:00 1:00 EEST 1941 Jul 17 - 1:00 C-Eur CE%sT 1944 Aug 24 - 3:00 Russia MSK/MSD 1991 Mar 31 2:00 - 2:00 Russia EE%sT 1992 Jan 19 2:00 - 3:00 Russia MSK/MSD - -# Croatia -# Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Europe/Zagreb 1:03:52 - LMT 1884 - 1:00 - CET 1941 Apr 18 23:00 - 1:00 C-Eur CE%sT 1945 May 8 2:00s - 1:00 1:00 CEST 1945 Sep 16 2:00s - 1:00 - CET 1982 Nov 27 - 1:00 EU CE%sT diff --git a/southamerica b/southamerica index 59f5fe7..ff47cef 100644 --- a/southamerica +++ b/southamerica @@ -631,7 +631,10 @@ Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31 -3:00 - ART # Aruba -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad + -4:30 - ANT 1965 # Netherlands Antilles Time + -4:00 - AST # Bolivia # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1325,7 +1328,7 @@ Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 # Curacao -# Milne gives 4:35:46.9 for Curacao mean time. +# Milne gives 4:35:46.9 for Curacao mean time; round to nearest. # # From Paul Eggert (2006-03-22): # Shanks & Pottenger say that The Bottom and Philipsburg have been at @@ -1341,7 +1344,14 @@ Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 # Netherlands as Kingdom Islands. This won't affect their time zones # though, as far as we know. # -# For all these regions, see America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Curacao -4:35:47 - LMT 1912 Feb 12 # Willemstad + -4:30 - ANT 1965 # Netherlands Antilles Time + -4:00 - AST + +# Sint Maarten +# Caribbean Netherlands +# Use America/Curacao. # Ecuador # @@ -1615,7 +1625,9 @@ Zone America/Paramaribo -3:40:40 - LMT 1911 -3:00 - SRT # Trinidad and Tobago -# See America/Puerto_Rico. +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2 + -4:00 - AST # Uruguay # From Paul Eggert (1993-11-18): -- 1.8.1.2
On 31 August 2013 01:21, Paul Eggert <eggert@cs.ucla.edu> wrote:
Other tz file readers had problems with the new pre1970 file, so remove it and related changes. To recover the pre-1970 data, instead change pre-1970 Zone entries in other files back to what they were. Perhaps we'll try to find a better way someday.
Thank you for reverting. I would have preferred to see the current git branch parked and master rebranched from before the controversial changes (using git push --force), then changes re-added one by one. Right now, it is hard to tell which changes are in and which are out. I intend to perform some git analysis to see if everything has been properly reverted. Stay tuned. Stephen
Stephen Colebourne wrote:
it is hard to tell which changes are in and which are out.
That's easily accomplished by doing a git diff between the last version before the controversial changes and what's in there now. Here's the output of 'git diff 81be53c16b97ce0bc561ce3891ce2503227e3369'. As far as I can tell, none of the changes should affect any of the time stamps, but of course it'd be nice if you can confirm that with your testing. diff --git a/Makefile b/Makefile index a74d1a7..e439055 100644 --- a/Makefile +++ b/Makefile @@ -330,8 +330,9 @@ TABDATA= iso3166.tab time.tab zone.tab DATA= $(YDATA) $(NDATA) $(SDATA) $(TABDATA) \ leap-seconds.list yearistype.sh WEB_PAGES= tz-art.htm tz-link.htm +AWK_SCRIPTS= checktab.awk leapseconds.awk zone-time.awk MISC= usno1988 usno1989 usno1989a usno1995 usno1997 usno1998 \ - $(WEB_PAGES) checktab.awk leapseconds.awk workman.sh \ + $(WEB_PAGES) $(AWK_SCRIPTS) workman.sh \ zoneinfo2tdf.pl ENCHILADA= $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) @@ -457,6 +458,7 @@ check_web: $(WEB_PAGES) clean_misc: rm -f core *.o *.out \ + time.tab \ date leapseconds tzselect version.h zdump zic yearistype clean: clean_misc rm -f -r tzpublic diff --git a/Theory b/Theory index b4bd4c2..580b548 100644 --- a/Theory +++ b/Theory @@ -224,7 +224,23 @@ could misbehave if data were omitted for pre-1970 transitions. However, the database is not designed for and does not suffice for applications requiring accurate handling of all past times everywhere, as it would take far too much effort and guesswork to record all -details of pre-1970 civil timekeeping. +details of pre-1970 civil timekeeping. The pre-1970 data in this +database covers only a tiny sliver of how clocks actually behaved; +the vast majority of the necessary information was lost or never +recorded, and much of what little remains is fabricated. + +Local mean time (LMT) offsets are recorded in the database only +because the format requires an offset. They should not be considered +meaningful, and should not prompt creation of zones merely because two +locations differ in LMT. Historically, not only did different +locations in the same zone typically use different LMT offsets, often +different people in the same location maintained mean-time clocks that +differed significantly, and many people used solar or some other time +instead of mean time. As for leap seconds, we don't know the history +of earth's rotation accurately enough to map SI seconds to historical +solar time to more than about one-hour accuracy; see Stephenson FR +(2003), Historical eclipses and Earth's rotation, A&G 44: 2.22-2.27 +<http://dx.doi.org/10.1046/j.1468-4004.2003.44222.x>. As noted in the README file, the tz database is not authoritative (particularly not for pre-1970 time stamps), and it surely has errors. @@ -384,8 +400,11 @@ in decreasing order of importance: name identifying each zone and append 'T', 'ST', etc. as before; e.g. 'VLAST' for VLAdivostok Summer Time. - Use UTC (with time zone abbreviation "zzz") for locations while - uninhabited. The "zzz" mnemonic is that these locations are, + Use 'LMT' for local mean time of locations before the introduction + of standard time; see "Scope of the tz database". + + Use UTC (with time zone abbreviation 'zzz') for locations while + uninhabited. The 'zzz' mnemonic is that these locations are, in some sense, asleep. Application writers should note that these abbreviations are ambiguous diff --git a/iso3166.tab b/iso3166.tab index d9dcf6a..a1e4b42 100644 --- a/iso3166.tab +++ b/iso3166.tab @@ -53,7 +53,7 @@ BL St Barthelemy BM Bermuda BN Brunei BO Bolivia -BQ Bonaire, St Eustatius & Saba +BQ Caribbean Netherlands BR Brazil BS Bahamas BT Bhutan diff --git a/northamerica b/northamerica index 7676c77..418261f 100644 --- a/northamerica +++ b/northamerica @@ -1341,25 +1341,27 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 # Quebec -# From Paul Eggert (2006-07-09): -# Shanks & Pottenger write that since 1970 most of Quebec has been -# like Montreal. +# From Paul Eggert (2013-08-30): +# Since 1970 most of Quebec has been like Toronto. +# However, because earlier versions of the tz database mistakenly relied on data +# from Shanks & Pottenger saying that Quebec differed from Ontario after 1970, +# a separate entry was created for most of Quebec. We're loath to lose +# its pre-1970 info, even though the tz database is normally limited to +# zones that differ after 1970, so keep this otherwise out-of-scope entry. -# From Paul Eggert (2006-06-27): # Matthews and Vincent (1998) also write that Quebec east of the -63 # meridian is supposed to observe AST, but residents as far east as # Natashquan use EST/EDT, and residents east of Natashquan use AST. -# In "Official time in Quebec" the Quebec department of justice writes in -# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.h... -# that "The residents of the Municipality of the -# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin, -# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is -# written and use Atlantic standard time all year round. The same applies to -# the residents of the Native facilities along the lower North Shore." -# <http://www.assnat.qc.ca/eng/37legislature2/Projets-loi/Publics/06-a002.htm> +# The Quebec department of justice writes in +# "The situation in Minganie and Basse-Cote-Nord" +# http://www.justice.gouv.qc.ca/english/publications/generale/temps-minganie-a... +# that the coastal strip from just east of Natashquan to Blanc-Sablon +# observes Atlantic standard time all year round. +# http://www.assnat.qc.ca/Media/Process.aspx?MediaId=ANQ.Vigie.Bll.DocumentGen... # says this common practice was codified into law as of 2007. # For lack of better info, guess this practice began around 1970, contra to # Shanks & Pottenger who have this region observing AST/ADT. +# for post-1970 data America/Puerto_Rico. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mont 1917 only - Mar 25 2:00 1:00 D @@ -1622,7 +1624,7 @@ Zone America/Thunder_Bay -5:57:00 - LMT 1895 -6:00 - CST 1910 -5:00 - EST 1942 -5:00 Canada E%sT 1970 - -5:00 Mont E%sT 1973 + -5:00 Toronto E%sT 1973 -5:00 - EST 1974 -5:00 Canada E%sT Zone America/Nipigon -5:53:04 - LMT 1895 @@ -2617,7 +2619,7 @@ Zone America/Belize -5:52:48 - LMT 1912 Apr # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton -4:00 - AST 1974 Apr 28 2:00 - -4:00 Bahamas A%sT 1976 + -4:00 Canada A%sT 1976 -4:00 US A%sT # Cayman Is diff --git a/southamerica b/southamerica index 17150a8..ff47cef 100644 --- a/southamerica +++ b/southamerica @@ -1350,7 +1350,7 @@ Zone America/Curacao -4:35:47 - LMT 1912 Feb 12 # Willemstad -4:00 - AST # Sint Maarten -# Bonaire, Sint Estatius and Saba +# Caribbean Netherlands # Use America/Curacao. # Ecuador diff --git a/zone.tab b/zone.tab index b4407f1..769432b 100644 --- a/zone.tab +++ b/zone.tab @@ -122,8 +122,7 @@ CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did n CA +4606-06447 America/Moncton Atlantic Time - New Brunswick CA +5320-06025 America/Goose_Bay Atlantic Time - Labrador - most locations CA +5125-05707 America/Blanc-Sablon Atlantic Standard Time - Quebec - Lower North Shore -CA +4531-07334 America/Montreal Eastern Time - Quebec - most locations -CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations +CA +4339-07923 America/Toronto Eastern Time - Ontario & Quebec - most locations CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973 CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut - most locations
Here is the patch of reversions I would consider to be appropriate: https://github.com/jodastephen/tz/commit/86a12cbb08b28683d964f0960c6453abbd1... (I worked from the base 4c43a929191da9711045b8efe30bbdbbfb7e0bcb commit. So, this can be examined against a git diff to that commit) This reverts all problematic changes to antarctica, europe, northamerica, southamerica, backward, zone.tab and Theory. (I believe that the current git repo is incorrect in various ways following previous partial reversions). This reversion should be checked before being applied, as it has not been compiled/tested. The Theory change reinstates the one zone per ISO-3166 region requirement. This is because it is a solid requirement, long standing, well understood and non political (if the ISO body deems an area to be sufficiently important to give it a code, tzdb should deem it important enough to give it a zone ID). I have not added any requirement to have a full history per ISO-3166 at this point. The associated checktab.awk check should also be reinstated, but I didn't feel confident doing so without the ability to compile/run/test it. Where links have been re-added to the europe/northamerica/southamerica/antarctic files, I have added a new comment - "Same zone history as xxx/yyy, so share the data". This comment is intended to defuse certain conflict boundary issues by indicating that the link exists to share data, not for any other reason. The right place for such links is in the main files, not the backward file, as the backward file should be entirely optional (ie. renames only). I would note that this applying this reversion, and recent discussions, imply a Theory rule around what the backward file is for. ie. that the system should follow the Theory rules even if the backward file is excluded from compilation. thanks Stephen
On Aug 31, 2013, at 4:26 PM, Stephen Colebourne <scolebourne@joda.org> wrote:
Here is the patch of reversions I would consider to be appropriate: https://github.com/jodastephen/tz/commit/86a12cbb08b28683d964f0960c6453abbd1...
Presumably - Uninhabited regions like the North Pole and Bouvet Island - do not need locations, since local time is not defined there. + Include at least one location per time zone rule set per country. + One such location is enough. Use ISO 3166 (see the file + iso3166.tab) to help decide whether something is a country. + However, uninhabited ISO 3166 regions like Bouvet Island was intended to be - Uninhabited regions like the North Pole and Bouvet Island + Include at least one location per time zone rule set per country. + One such location is enough. Use ISO 3166 (see the file + iso3166.tab) to help decide whether something is a country. + However, uninhabited ISO 3166 regions like Bouvet Island so that you don't lose "do not need locations...".
BTW, the "Here are the general rules used for choosing location names, in decreasing order of importance:" section appears to include both rules for choosing location names and rules for deciding whether to have a location *requiring* a name, i.e. Include at least one location per time zone rule set per country. One such location is enough. Use ISO 3166 (see the file iso3166.tab) to help decide whether something is a country. However, uninhabited ISO 3166 regions like Bouvet Island do not need locations, since local time is not defined there. If all the clocks in a region have agreed since 1970, don't bother to include more than one location even if subregions' clocks disagreed before 1970. Otherwise these tables would become annoyingly large. and Keep locations compact. Use cities or small islands, not countries or regions, so that any future time zone changes do not split locations into different time zones. E.g. prefer 'Paris' to 'France', since France has had multiple time zones. appear not to discuss what name to use for a location, but whether to have a location in the first place. Should there be a separate section indicating what the rules are for deciding whether there should *be* a location, containing those rules (and any others that we might add in the future)?
On 1 September 2013 00:51, Guy Harris <guy@alum.mit.edu> wrote:
Presumably ...> was intended to be Yes, thanks. https://github.com/jodastephen/tz/commit/47ce2bd4d2b7d2ff4f1a0f1683ca85133b6...
Stephen
Stephen Colebourne wrote:
The Theory change reinstates the one zone per ISO-3166 region requirement.
I'm afraid that's incorrect. That change would strengthen the requirement beyond what it ever was, by requiring a Zone to be present for every country. That has never been required and has never been the practice in the tz database. There is no timekeeping reason to undo the changes already agreed upon in this area and incorporated in the 2013d stable release, nor is there any timekeeping reason to add the proposed requirement. It's purely a political requirement. The other changes in that proposed patch seem to be an attempt to implement the Theory change. While not affecting timestamps (they are internal administration), they use a style that emphasizes the roles of countries more. This would increase the future political pressures on tz database maintenance, and I don't see how that would be a step forward. We should be deemphasizing political issues, not emphasizing them more.
On Aug 31, 2013, at 9:14 PM, Paul Eggert <eggert@cs.ucla.edu> wrote:
We should be deemphasizing political issues, not emphasizing them more.
To put it another way, the goal should be to reduce the attack surface of the tz database to non-technical complaints. There is certainly no reason to consider *increasing* the attack surface to be a good thing by itself, so, unless there's some significant benefit to increasing it, we shouldn't increase it and, unless there's some significant disadvantage to decreasing it, we should try to decrease it.
Paul Eggert wrote:
Stephen Colebourne wrote:
The Theory change reinstates the one zone per ISO-3166 region requirement. I'm afraid that's incorrect. That change would strengthen the requirement beyond what it ever was, by requiring a Zone to be present for every country. That has never been required and has never been the practice in the tz database.
Since the ISO-3166-1 code table is a reasonably well used base for most geographical activity, at some point timezones are required to match each. As with pre-1970 data, this creates a new 'second database' requirement in providing that mapping, and personally I see no reason that it should not be covered by the main database. Moving on to 3166-2 and -3, the ISO have already solved that problem for us since that data is chargeable, so until such time as a freely available list is made available we are required to provide our own sub-zones where necessary anyway :) -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
On Sep 1, 2013, at 12:57 AM, Lester Caine <lester@lsces.co.uk> wrote:
Paul Eggert wrote:
Stephen Colebourne wrote:
The Theory change reinstates the one zone per ISO-3166 region requirement. I'm afraid that's incorrect. That change would strengthen the requirement beyond what it ever was, by requiring a Zone to be present for every country. That has never been required and has never been the practice in the tz database.
Since the ISO-3166-1 code table is a reasonably well used base for most geographical activity, at some point timezones are required to match each.
There is no necessarily a single tzdb zone for a given entity that has an ISO 3166 code. (Two immediately obvious counterexamples - the entities with the ISO 3166 codes "US" and "CA".) So do you mean that there do not exist - or, at least, *should* not exist - any tzdb zones that apply to more than one entity with a given ISO 3166 code?
Guy Harris wrote:
Since the ISO-3166-1 code table is a reasonably well used base for most geographical activity, at some point timezones are required to match each.
There is no necessarily a single tzdb zone for a given entity that has an ISO 3166 code. (Two immediately obvious counterexamples - the entities with the ISO 3166 codes "US" and "CA".)
So do you mean that there do not exist - or, at least,*should* not exist - any tzdb zones that apply to more than one entity with a given ISO 3166 code?
Ignoring the politics ... We need to find out from our users what time zone they are in. Asking them 'which continent' is one of those things that gets a blank look at times, so even 'Europe' 'London' CAN be confusing to some users. Ask them 'country' and you have a much better chance of getting a response, so CA or US at least get us to a subset of options to select from? I have no problem if the detail is stored under one 'tag' so that both CA and US could use the same raw data, so 'links' to a valid set of tags should work, except would a Canadian know the correct US city? Move to the Far East, and translations become essential and there may be a need for additional 'links'? I'll be honest - I'm not particularly bothered either way - but building a database of tz links from the full country table ( the free ones rather than the 3166-2 chargeable ones ;) ) is just another commonly required set of data? If tz makes changes, then the cross reference also needs an update. -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
On Sep 2, 2013, at 3:19 AM, Lester Caine <lester@lsces.co.uk> wrote:
Guy Harris wrote:
Since the ISO-3166-1 code table is a reasonably well used base for most geographical activity, at some point timezones are required to match each.
There is no necessarily a single tzdb zone for a given entity that has an ISO 3166 code. (Two immediately obvious counterexamples - the entities with the ISO 3166 codes "US" and "CA".)
So do you mean that there do not exist - or, at least,*should* not exist - any tzdb zones that apply to more than one entity with a given ISO 3166 code?
Ignoring the politics ... We need to find out from our users what time zone they are in.
You need to find out from the system what time zone the user is in. For UN*X systems that sit in a machine room: Users will probably have the time zone in which that machine room resides made the default setting for their session. That time zone setting was made when the system was set up by the person who set it up. For local users, that's almost certainly the right answer, the only exceptions being users at sites sitting on time zone boundaries in offices on the other side of the time zone boundary from the machine room. For remote users, their time zone setting might be sent over the connection to the machine, although that didn't seem to be the case when I did "TZ=Europe/Berlin ssh {my machine}" - but the "Europe/Berlin" might have gone over the connection but been ignored or discarded. In those cases where the user needs to override the default, they're probably not going to be asked; instead, they're probably going to be obliged to set it themselves. For UN*X systems that sit on a desktop: Systems within an organization may well have been set up by the organization's IT department and given a default time zone setting. There is also Eliot's and Paul's DHCP option: http://tools.ietf.org/html/rfc4833 although I don't know what DHCP clients or servers support it. Personal systems will probably ask the user for the time zone when they set the system up. For UN*X systems that you can carry with you: They can often determine their location, and thus their time zone, using a combination of GPS (if available), Wi-Fi and some database of Wi-Fi networks (if available), and mobile phone tower information (if available). OS X and iOS are an existence proof of that (and, as I think iMacs come with Wi-Fi, that probably works for most OS X systems that sit on a desktop, too). If none of those *are* available, or if the user wants to override it, there's typically a way to set the time zone. I'm less familiar with Windows, but many of the answers might be similar.
Asking them 'which continent' is one of those things that gets a blank look at times, so even 'Europe' 'London' CAN be confusing to some users. Ask them 'country' and you have a much better chance of getting a response, so CA or US at least get us to a subset of options to select from? I have no problem if the detail is stored under one 'tag' so that both CA and US could use the same raw data, so 'links' to a valid set of tags should work, except would a Canadian know the correct US city? Move to the Far East, and translations become essential and there may be a need for additional 'links'?
The way the OS X "set your time zone" GUI works is that (if you don't have "Set time zone automatically using current location" checked), the world map it shows will, as you move the mouse over it, show vertical bands (probably roughly corresponding to "time zones" in the conventional sense rather than in the "tzdb zone" sense, i.e. representing default offset from GMT but *not* DST rules) and showing the countries in that zone as lighter grey. If you click on the map, it puts a blue blob at the location of the nearest city to where you clicked, changes the text for "Time Zone:" to a name for the time zone for the city, and puts the name of the city in the "Nearest City:" box. That box has a drop-down list of cities in the area (perhaps all the cities in that zone). That's how you select a tzid. The map says "Geonames.org", which is probably the source of most of the data for the map. I'm not finding an immediately-obvious indication that the GeoNames database has tzids for locations, so I'm not sure where the tzid for the location comes from. (Deborah, please feel free to step in if I got anything wrong. I didn't spend much time looking at that from down in the CoreOS engine room. :-)) So what I think "select a tzid" UIs should do is have a database such as that, and hide tzid strings from the user to the maximum extent possible. tzselect is a simple version of that, for the command line; fancier command-line tools, with fancier databases than zone.tab, could also be done. This would, ideally, involve showing people country and city *names* (rather than showing, for example, ISO 3166 country codes), in their own languages, as necessary, and would not involve people ever having to know tzids.
Guy Harris wrote:
This would, ideally, involve showing people country and city*names* (rather than showing, for example, ISO 3166 country codes), in their own languages, as necessary, and would not involve people ever having to know tzids.
I'm not quite sure what all this ream of writing was intended to explain? Setting the timezone on a local system is not the problem. It's telling some remote system what that is which is currently not happening automatically ... Yes with more modern devices we can ask for their current location, if that is enabled, but a large number of devices still don't have this facility, and my tablets don't have GPS so don't reply to a request. Once a client logs in, the information can be provided a number of ways, but for anonymous clients the safest thing to do is provide a 'default' local timezone rather than assuming that from what is provided via the browser request. Or ask them where they are ... -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
On Sep 2, 2013, at 11:53 AM, Lester Caine <lester@lsces.co.uk> wrote:
Guy Harris wrote:
This would, ideally, involve showing people country and city*names* (rather than showing, for example, ISO 3166 country codes), in their own languages, as necessary, and would not involve people ever having to know tzids.
I'm not quite sure what all this ream of writing was intended to explain?
It was intended to explain that 1) you don't always have to ask the user for the time zone - that's not a universal characteristic of everything that deals with times, as that information may be made available by other mechanisms; 2) in those cases where you *do* have to ask the user for the time zone, there are better and worse ways of doing so, and something that relies solely on the list of tzids, or that shows users tzids rather than locations, falls under the category of "worse", and you *can* do better than that (OS X does do better; I'm not sure iOS even lets you set it - as far as I know, it automatically sets the time zone using the value it gets from Core Location and some unspecified database of tzdb zone boundaries).
Setting the timezone on a local system is not the problem. It's telling some remote system what that is which is currently not happening automatically ... Yes with more modern devices we can ask for their current location, if that is enabled, but a large number of devices still don't have this facility, and my tablets don't have GPS so don't reply to a request.
Do your tablets have Wi-Fi? If so, you might be able to use something such as Skyhook: http://www.skyhookwireless.com/howitworks/ And *if* your tablets are running some OS that includes location services (iOS and Android both appear to), you might be able to use that and not even have to care how it happens.
Guy Harris wrote:
Do your tablets have Wi-Fi? If so, you might be able to use something such as Skyhook:
http://www.skyhookwireless.com/howitworks/
And*if* your tablets are running some OS that includes location services (iOS and Android both appear to), you might be able to use that and not even have to care how it happens.
Guy - I'm getting annoyed by all this shouting and stamping - its got nothing to do with what is ACTUALLY being discussed! I work with customers who have trouble even getting a wireless connection at time and many of our systems have to cater for periods without access to the internet. The BULK of my systems are accessed by (web)browsers on many different devices most of which are never actually logged into our sites so currently we have no way of even identifying their timezone. Stephen has already explained the limitations on matching timezones with countries and I'm not really bothered where that matching is done as long as there is something consistent and correct I can use. If that has to be outside TZ then fine. But this is just a very small part of the use of the tz data, and my main interest is historical times, where we have the location. OSM has a growing archive of that. All I need to be able to identify is which timezone a location is in on a particular date. THIS is where the shape files defining ISO3166 codes can be useful and again I'm looking to match that data to the timezone data. At some point we will also map the tz zones and their historic changes, but the current database is countries. Now if you have something constructive ... please don't pad it out with unnecessary information ... -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
On Sep 2, 2013, at 12:32 PM, Lester Caine <lester@lsces.co.uk> wrote:
But this is just a very small part of the use of the tz data, and my main interest is historical times, where we have the location.
"Location" in what sense? Longitude/latitude?
All I need to be able to identify is which timezone a location is in on a particular date. THIS is where the shape files defining ISO3166 codes can be useful
If you're talking about using the tzdb, and you have a location in the form of a longitude/latitude, what you want are shape files defining *tzdb zones*, not shape files defining areas labeled with ISO 3166 codes: http://efele.net/maps/tz/world/
On Mon, 2 Sep 2013, Lester Caine wrote:
OSM has a growing archive of that. All I need to be able to identify is which timezone a location is in on a particular date.
You mean like I've done here: http://derickrethans.nl/what-time-is-it.html http://maps.derickrethans.nl/?l=timezone,timezones&lat=52.485&lon=-1.890&zoo... cheers, Derick -- http://derickrethans.nl | http://xdebug.org Like Xdebug? Consider a donation: http://xdebug.org/donate.php twitter: @derickr and @xdebug Posted with an email client that doesn't mangle email: alpine
Derick Rethans wrote:
OSM has a growing
archive of that. All I need to be able to identify is which timezone a location is in on a particular date. You mean like I've done here:
http://derickrethans.nl/what-time-is-it.html http://maps.derickrethans.nl/?l=timezone,timezones&lat=52.485&lon=-1.890&zoo...
Has it been made available as an overlay for OSM yet? You sent me a link before and I'd completely forgotten about it. I remember now what the problem was. With the rather crude outlines some edge cases are not actually covered? Holyhead for instance. It needs to be relations in OSM using the mapped country boundaries which is why I said that 'countries' was available as a search filter currently. -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
On 1 September 2013 05:14, Paul Eggert <eggert@cs.ucla.edu> wrote:
Stephen Colebourne wrote:
The Theory change reinstates the one zone per ISO-3166 region requirement.
I'm afraid that's incorrect. That change would strengthen the requirement beyond what it ever was, by requiring a Zone to be present for every country. That has never been required and has never been the practice in the tz database.
You are mistaken. You removed the requirement in commit https://github.com/jodastephen/tz/commit/d3b025adb25554ee10b986850371e573df9... It was first added 16 years ago in commit https://github.com/jodastephen/tz/commit/9d0f6c217dc26489d32e7fb119ea29fecf7... This patch simply reinstates the long-standing practice of the database.
There is no timekeeping reason to undo the changes already agreed upon in this area and incorporated in the 2013d stable release, nor is there any timekeeping reason to add the proposed requirement. It's purely a political requirement.
The politics is of your own making. (The 2013d release is essentially faulty because of this) Removing this rule has caused much of this debate. Reinstating it is entirely appropriate.
The other changes in that proposed patch seem to be an attempt to implement the Theory change. While not affecting timestamps (they are internal administration), they use a style that emphasizes the roles of countries more. This would increase the future political pressures on tz database maintenance, and I don't see how that would be a step forward. We should be deemphasizing political issues, not emphasizing them more.
They are nothing more than a reversal of all your recent damaging changes which I thought you'd agreed to revert. They simply put back the correct and long-standing way of working for the tzdb. ISO-3166 codes are important to the vast majority of actual applications that care about time-zones. They are widely used as the canonical definition of countries/territories/regions and are used without political issue by others. I have no idea why the use of the most widely accepted standard in this are makes things worse. Anyway, the patch simply undoes the damage caused since May 2013. It doesn't add anything new. Stephen
On Sep 1, 2013, at 1:55 AM, Stephen Colebourne <scolebourne@joda.org> wrote:
ISO-3166 codes are important to the vast majority of actual applications that care about time-zones.
..."care about time-zones" presumably meaning "*explicitly* care about time-zones", for example, applications that explicitly specify a time zone (whether wired in, specified as an application parameter, or specified in some configuration file or database for the application), rather than "*implicitly* care about time-zones", for example, the "date" command on UN*X systems, which cares that ctime() will convert seconds-since-the-Epoch to a string giving local time in the user's time zone, but doesn't explicitly request a particular time zone (and which has absolutely no idea what an ISO 3166 country code is, and has no reason to know).
On 1 September 2013 10:20, Guy Harris <guy@alum.mit.edu> wrote:
On Sep 1, 2013, at 1:55 AM, Stephen Colebourne <scolebourne@joda.org> wrote:
ISO-3166 codes are important to the vast majority of actual applications that care about time-zones.
..."care about time-zones" presumably meaning "*explicitly* care about time-zones", for example, applications that explicitly specify a time zone (whether wired in, specified as an application parameter, or specified in some configuration file or database for the application), rather than "*implicitly* care about time-zones", for example, the "date" command on UN*X systems, which cares that ctime() will convert seconds-since-the-Epoch to a string giving local time in the user's time zone, but doesn't explicitly request a particular time zone (and which has absolutely no idea what an ISO 3166 country code is, and has no reason to know).
The applications I work with and libraries I manage allow a developer to find the local time and offset from UTC/Greenwich for any instant on the timeline. If this were only a problem of what the current time is, life would be easy. Stephen
On Sep 1, 2013, at 2:47 PM, Stephen Colebourne <scolebourne@joda.org> wrote:
On 1 September 2013 10:20, Guy Harris <guy@alum.mit.edu> wrote:
On Sep 1, 2013, at 1:55 AM, Stephen Colebourne <scolebourne@joda.org> wrote:
ISO-3166 codes are important to the vast majority of actual applications that care about time-zones.
..."care about time-zones" presumably meaning "*explicitly* care about time-zones", for example, applications that explicitly specify a time zone (whether wired in, specified as an application parameter, or specified in some configuration file or database for the application), rather than "*implicitly* care about time-zones", for example, the "date" command on UN*X systems, which cares that ctime() will convert seconds-since-the-Epoch to a string giving local time in the user's time zone, but doesn't explicitly request a particular time zone (and which has absolutely no idea what an ISO 3166 country code is, and has no reason to know).
The applications I work with and libraries I manage allow a developer to find the local time and offset from UTC/Greenwich for any instant on the timeline.
Where I'm sitting right now as I type this sentence, the local time is 4:24 PM and the offset from UTC is -7:00. Where some other members of the list, the local time is *not* 4:24 PM and the offset from UTC is *not* -7:00. Therefore, presumably either 1) the developer explicitly specifies *which particular* local time and offset they want, which is the "*explicitly* care about time zones" case or 2) the developer implicitly gets whatever local time is configured, which is the "*implicitly* cares about time zones" case. In neither case, if the tzdb is being used, does the developer for case 1) or person doing the configuration for case 2) need to specify an ISO 3166 code for the time conversion, unless the tzid isn't being specified explicitly but is instead being derived from some other values that include an ISO 3166 code. The applications in question might, for some other reason, use ISO 3166 codes, but that's a separate matter. And if you mean by "for any instant on the timeline" you mean "arbitrarily far in the past" ("arbitrarily far in the future" is only a guess unless you have an algorithm that perfectly predicts government behavior), then the real problems have nothing to do with ISO 3166 codes, they has to do with 1) the reliability of historical standardized time information in the tzdb (see, for example, per Paul's comment about Shanks); 2) the completeness of historical standardized time information in the tzdb (i.e., current tzdb zones might, in order to track standardized time rules all the way back to the introduction of standardized time, need to be split); 3) handling time *before* standardized time was introduced (which the tzdb can't and shouldn't do). 1) has nothing to do with ISO 3166 country codes. 2) doesn't really do so, either, as a zone that was always part of one and only one country might *still* get split due to, for example, local peculiarities in handling daylight savings time of which we were previously unaware.
Guy Harris wrote:
Where I'm sitting right now as I type this sentence, the local time is 4:24 PM and the offset from UTC is -7:00. And if I apply that offset in 6 months time will I get the right local time? How do I find what the right offset should be in 6 months time? I currently don't have enough information. Easiest way is ask for their location which usually starts with a country code and then we don't have to display the whole list of timezones ? Just a sub-set if required ... If I just ask for their 'timezone' then I still need to ask for the country anyway. Providing country code as part of the data simply helps the process of asking.
( Wouldn't it be nice if the browser returned a timezone rather than a meaningless offset - but I've been asking that one for 10+ years :) ) -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
Lester Caine <lester@lsces.co.uk> writes:
Guy Harris wrote:
Where I'm sitting right now as I type this sentence, the local time is 4:24 PM and the offset from UTC is -7:00.
And if I apply that offset in 6 months time will I get the right local time? How do I find what the right offset should be in 6 months time? I currently don't have enough information.
Well, just to be pendantic, no one on earth has enough information to answer that question, since it's impossible to answer. Six months time provides six months for governments to change the rules around local time, and no one knows what changes they may enact. The best that you can do is try to extrapolate forward based on current laws and hope they don't change, and recalculate local time if they do change.
Easiest way is ask for their location which usually starts with a country code and then we don't have to display the whole list of timezones ? Just a sub-set if required ... If I just ask for their 'timezone' then I still need to ask for the country anyway. Providing country code as part of the data simply helps the process of asking.
Actually, in the most recent instances when I've been asked for my time zone, I was not asked for my country. I was asked for my continent and then for the large city on that continent whose time mine matched. -- Russ Allbery (rra@stanford.edu) <http://www.eyrie.org/~eagle/>
On Sep 1, 2013, at 4:56 PM, Lester Caine <lester@lsces.co.uk> wrote:
Guy Harris wrote:
Where I'm sitting right now as I type this sentence, the local time is 4:24 PM and the offset from UTC is -7:00. And if I apply that offset in 6 months time will I get the right local time?
No, but if you apply the entire time zone database to the problem, you will (assuming the US government doesn't decide to change the daylight savings time rules again).
How do I find what the right offset should be in 6 months time? I currently don't have enough information.
"man zic", and read the time zone database, and you will then have enough information.
Easiest way is ask for their location which usually starts with a country code
That requires a map between locations - which obviously have more than just a country code in many cases, given that the ISO 3166 country codes "us" and "ca", for example, correspond to countries that have more than one country code.
and then we don't have to display the whole list of timezones ? Just a sub-set if required
Yes, it would be a good idea to have a file that maps locations to tzids. Of course, there's "location" as in "location name" (such as "Palo Alto, California, USA" or "Düsseldorf, Germany" (or "Düsseldorf, North Rhine-Westfalia, Germany" if there's more than one "Düsseldorf" in Germany; there *is* more than one "Palo Alto" in the US: https://en.wikipedia.org/wiki/Palo_Alto_(disambiguation) ).
... If I just ask for their 'timezone' then I still need to ask for the country anyway.
Or you can ask for their current longitude and latitude; I suspect that's how my computer figures out the appropriate time zone: https://developer.apple.com/library/Mac/documentation/CoreLocation/Reference...
( Wouldn't it be nice if the browser returned a timezone rather than a meaningless offset - but I've been asking that one for 10+ years :) )
To which browser are you referring?
Guy Harris wrote:
( Wouldn't it be nice if the browser returned a timezone rather than a meaningless offset - but I've been asking that one for 10+ years:) ) To which browser are you referring? Every browser can only return your current time offset, not the actual time zone, so anything else is a guess :(
-- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
On Sep 2, 2013, at 3:06 AM, Lester Caine <lester@lsces.co.uk> wrote:
Guy Harris wrote:
( Wouldn't it be nice if the browser returned a timezone rather than a meaningless offset - but I've been asking that one for 10+ years:) ) To which browser are you referring? Every browser can only return your current time offset, not the actual time zone, so anything else is a guess :(
OK, let me ask the question again: To which browser are you referring? Firefox? Internet Explorer? Safari? Chrome? Opera? Konqueror? Netscape Navigator? Mosaic? WorldWideWeb/Nexus? ... Or, instead, let me ask the question that my expanded question indicates needs to be asked: What do you mean by "browser"?
Guy Harris wrote:
( Wouldn't it be nice if the browser returned a timezone rather than a meaningless offset - but I've been asking that one for 10+ years:) )
To which browser are you referring? Every browser can only return your current time offset, not the actual time zone, so anything else is a guess:( OK, let me ask the question again: To which browser are you referring? Firefox? Internet Explorer? Safari? Chrome? Opera? Konqueror? Netscape Navigator? Mosaic? WorldWideWeb/Nexus? ...
Or, instead, let me ask the question that my expanded question indicates needs to be asked: What do you mean by "browser"?
The current 'html' standards only allow for the return of the current time offset between the local time at the site of the browser and UTC. This laughingly called the timezone Offset, but lacks that important piece of information to identify which timezone. i.e. it has no information on the daylight saving information. http://www.w3schools.com/jsref/jsref_gettimezoneoffset.asp as you will see identifies all major browsers as supporting this. It was the problems of displaying a calendar for international web based events without a client logging in which first got me involved with the tz database ... you can't display that calendar in 'local time' until the client provides their timezone manually. -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
On Sep 2, 2013, at 11:39 AM, Lester Caine <lester@lsces.co.uk> wrote:
The current 'html' standards only allow for the return of the current time offset between the local time at the site of the browser and UTC. This laughingly called the timezone Offset, but lacks that important piece of information to identify which timezone. i.e. it has no information on the daylight saving information.
OK, so you really *did* mean "browser" in the sense of "Web browser". That's an issue for browser writers and Web standardizers; the tzdb provides tzids, whether said browser writers and Web standardizers choose to use them is up to them, not up to us (and, to a large degree, it's up to a large organization located in Redmond, Washington, USA, as they have an OS with a somewhat significant market share in the notebook, desktop, and server market, and *don't* use the tzdb for time zone/DST information, and thus any browser that runs on said OS would have to handle tzids itself rather than using OS code to do so).
It was the problems of displaying a calendar for international web based events without a client logging in which first got me involved with the tz database ... you can't display that calendar in 'local time' until the client provides their timezone manually.
Do it as much like OS X as possible, unless you can do it even better (where exposing users to the details of the tzdb to a greater degree than does the OS X GUI counts as "worse", not "better").
On Sep 2, 2013, at 11:55 , Guy Harris <guy@alum.mit.edu> wrote:
On Sep 2, 2013, at 11:39 AM, Lester Caine <lester@lsces.co.uk> wrote:
The current 'html' standards only allow for the return of the current time offset between the local time at the site of the browser and UTC. This laughingly called the timezone Offset, but lacks that important piece of information to identify which timezone. i.e. it has no information on the daylight saving information.
OK, so you really *did* mean "browser" in the sense of "Web browser".
That's an issue for browser writers and Web standardizers; the tzdb provides tzids, whether said browser writers and Web standardizers choose to use them is up to them, not up to us (and, to a large degree, it's up to a large organization located in Redmond, Washington, USA, as they have an OS with a somewhat significant market share in the notebook, desktop, and server market, and *don't* use the tzdb for time zone/DST information, and thus any browser that runs on said OS would have to handle tzids itself rather than using OS code to do so).
The second edition of the ECMAScript Internationalization API will use IANA time zone identifiers in its DateTimeFormat API, including the ability for applications to obtain the ID of the user's time zone. That edition is currently scheduled to be finalized by December 2014, and it will be some time more before applications can rely on this functionality to be generally available in browsers. For technical details, see http://wiki.ecmascript.org/doku.php?id=globalization:specification_drafts Norbert
On 2 September 2013 00:34, Guy Harris <guy@alum.mit.edu> wrote:
Where I'm sitting right now as I type this sentence, the local time is 4:24 PM and the offset from UTC is -7:00. Where some other members of the list, the local time is *not* 4:24 PM and the offset from UTC is *not* -7:00. Therefore, presumably either 1) the developer explicitly specifies *which particular* local time and offset they want, which is the "*explicitly* care about time zones" case or 2) the developer implicitly gets whatever local time is configured, which is the "*implicitly* cares about time zones" case.
In neither case, if the tzdb is being used, does the developer for case 1) or person doing the configuration for case 2) need to specify an ISO 3166 code for the time conversion, unless the tzid isn't being specified explicitly but is instead being derived from some other values that include an ISO 3166 code.
In enterpirise development both occur. There are also cases where we need to lookup the time-zone by ISO-3166. While such a lookup (based on zone.tzb) is not in JSR-310, its omission is primarily one of reducing scope for "version 1". I do expect a future version of the API to provide such a lookup (ISO-3166 to a list of zone IDs).
And if you mean by "for any instant on the timeline" you mean "arbitrarily far in the past" ("arbitrarily far in the future" is only a guess unless you have an algorithm that perfectly predicts government behavior), then the real problems have nothing to do with ISO 3166 codes, they has to do with 1) the reliability of historical standardized time information in the tzdb (see, for example, per Paul's comment about Shanks); 2) the completeness of historical standardized time information in the tzdb (i.e., current tzdb zones might, in order to track standardized time rules all the way back to the introduction of standardized time, need to be split); 3) handling time *before* standardized time was introduced (which the tzdb can't and shouldn't do).
Java APIs that I look after allow the user to create an object representing an instant in the far past/future. With JSR-310 that is up to 1 billion years forward and backward. Obviously, time-zones make little sense that far out, but the API is designed to make them work. Such a decision fits well within the overall API and protects users from boundary bugs which would occur if time-zones were arbitrarily limited to a narrow range of a hundered years or so around now. I don't expect anyone who is happy with the detailed meaning of time and time-zones (such as those on this list) to be happy with such an API. My target audience is those that just want things to work in an acceptable and bug-free manner, similar to how it has always worked in Java. Stephen
On Sep 2, 2013, at 10:46 AM, Stephen Colebourne <scolebourne@joda.org> wrote:
In enterpirise development both occur. There are also cases where we need to lookup the time-zone by ISO-3166.
By ISO 3166 plus something else, presumably, given that the correct answer to "what are the tzids for country codes US and CA" is "mu!"
While such a lookup (based on zone.tab) is not in JSR-310,
...and such a lookup doesn't depend on there being, for each ISO 3166 country code, at least one tzid corresponding to a location within that country; there is no *technical* reason why HR couldn't map to Europe/Belgrade. The problems with such a mapping are cultural/political, not technical; this does not mean that we can ignore those problems, it just means that they're not *technical* problems and there is no purely-*technical* requirement that, for each ISO 3166 country code, there be a tzid corresponding to a location within that country. (All problems in computer engineering can, as we know, be solved by adding a layer of indirection. :-))
Java APIs that I look after allow the user to create an object representing an instant in the far past/future. With JSR-310 that is up to 1 billion years forward and backward. Obviously, time-zones make little sense that far out, but the API is designed to make them work.
Where "work" is presumably defined to mean "always return a value rather than throwing an exception" rather than "always return a *useful* value", the latter being difficult at best for an instant preceding, say, the Big Bang. The question is "how far back should that API attempt to provide *useful* values?" If it dates back to before the government of the location for which you're trying to get local time for that instant establishing civil time as being standard time, that gets difficult, and if it dates back to before we currently have reliable information about Daylight Savings Time, it again gets difficult. *Deleting* historical information makes it more difficult, of course. So does not splitting zones if newly-discovered historical information indicates that two locations within a given tzdb zone had different standardized offsets from GMT or different DST rules. How far should the tzdb go? And should there be a way to generate, from the tzdb, a modified tzdb that coalesces all "different only before 1970" tzdb zones into a single zone? I suspect that, if we have a lot of "different only before 1970" tzids, a lot of UN*X systems will want to coalesce them, to simplify the initial time zone setup process if nothing else. And, if the Wikipedia article on ISO 3166 is correct, "The first edition of ISO 3166 was published in 1974", so ISO 3166 codes are irrelevant to the historical accuracy of pre-1970 tzdb information in any case - they're not even relevant to post-1970 but pre-1974 tzdb information. :-)
Such a decision fits well within the overall API and protects users from boundary bugs which would occur if time-zones were arbitrarily limited to a narrow range of a hundered years or so around now.
"Time zones", in the commonly understood sense, *are* limited to a narrow region of time, dating back to the establishment of said zones. I don't think there were time zones, in that sense, in 1066 CE, for example. About all you can do with a date/time going back *that* far is treat it as local mean solar time or local apparent solar time, and that involves neither time zones nor the tzdb.
Stephen Colebourne wrote:
The Theory change reinstates the one zone per ISO-3166 region requirement.
I'm afraid that's incorrect. That change would strengthen the requirement beyond what it ever was, by requiring a Zone to be present for every country. That has never been required and has never been the practice in the tz database.
You are mistaken.
Hmm, in reviewing the changes it appears we are both mistaken. The older guideline, which you are proposing to resurrect, does not require "one zone per ISO-3166 region"; it allows a link instead of a zone, and it doesn't require either for uninhabited regions. I relied on your summary of the change rather than looking at the actual wording. So when I wrote "has never been the practice", I was referring to the fact that it's always been the case that some country codes have links and not zones, while the uninhabited ones have neither. Since we do not remove names, and we already cover the inhabited ISO 3166 codes, the only reason to resurrect the older guideline would be to commit ourselves to the creation of a new link or zone in response to a new country code, or an existing one that becomes inhabited. Say, for example, the UN headquarters declares independence so the folks at ISO 3166 decide to add a code UN for the United Nations, or suppose the United States splits apart into the Red States and the Blue States. In either case, we shouldn't commit ourselves to creating new zones or links in response to these political developments. If the old names continue to work, there's no timekeeping reason to change them, and we should insulate our maintenance guidelines from politics as much as we can.
On 1 September 2013 17:09, Paul Eggert <eggert@cs.ucla.edu> wrote:
Stephen Colebourne wrote:
The Theory change reinstates the one zone per ISO-3166 region requirement.
I'm afraid that's incorrect. That change would strengthen the requirement beyond what it ever was, by requiring a Zone to be present for every country. That has never been required and has never been the practice in the tz database.
You are mistaken.
Hmm, in reviewing the changes it appears we are both mistaken. The older guideline, which you are proposing to resurrect, does not require "one zone per ISO-3166 region"; it allows a link instead of a zone, and it doesn't require either for uninhabited regions. I relied on your summary of the change rather than looking at the actual wording. So when I wrote "has never been the practice", I was referring to the fact that it's always been the case that some country codes have links and not zones, while the uninhabited ones have neither.
I think we have established certain things here: - that no pre-1970 data will be deleted from any "full" zone - that LMT isn't enough reason for a separate "full" zone Given those, I have no problem with the zone ID for one ISO-3166 pointing at another, although I strongly believe that the "shared data" commentary I added is helpful to reduce pain. But I do require those links to be in the main files, not in "backward". The intention of the Theory file at that point was IMO to refer to the main database. The "backward" file is solely about backwards compatibility, an entirely different problem. The proposed patch reinstates the Theory lines, and move the Link definitions back to the main files (and not much else IIRC).
Since we do not remove names, and we already cover the inhabited ISO 3166 codes, the only reason to resurrect the older guideline would be to commit ourselves to the creation of a new link or zone in response to a new country code, or an existing one that becomes inhabited. Say, for example, the UN headquarters declares independence so the folks at ISO 3166 decide to add a code UN for the United Nations, or suppose the United States splits apart into the Red States and the Blue States. In either case, we shouldn't commit ourselves to creating new zones or links in response to these political developments. If the old names continue to work, there's no timekeeping reason to change them, and we should insulate our maintenance guidelines from politics as much as we can.
The ISO-3166 maintenance body has its own set of rules that determine when to create a new code. Such a creation is going to reflect the result of a war or some other major event. In almost all of those cases, there are going to be two sides to whatever "debate"/war was the trigger. The effect of that is that people on one side will want to separate themselves from the other. The extra zone ID thus causes less offence than the minimalist attempt you are pushing for. For example, if you remove the "backward" file today, users are expected to use Europe/Belgrade for all the ex-Yugoslav countries. If the Belgrade zone ID was a number or random sequence of letters, then that would be fine, but its not. As such, it is completely politically unacceptable for those non-Serbian peoples to be using the zone ID of the other side in a major war. Thus, I understand the desire to say "If the old names continue to work, there's no timekeeping reason to change them", but I'm afraid I find it naive when examined against real world events. And since my argument is basically to put back how this database has always worked, I feel on pretty strong ground. thanks Stephen
Stephen Colebourne wrote:
- LMT isn't enough reason for a separate "full" zone
In that case, there's no reason to separate America/St_Thomas from America/Tortola, right? They differ only in LMT, so they could be links.
if you remove the "backward" file today
We are not going to remove the "backward" file. It's part of the database and is not going away. That being said, perhaps we can discuss why you have qualms about moving some of the Link directives to 'backward'. Are you trying to distinguish zone renaming from other maintenance activities? We haven't done that systematically in the past, but perhaps we should start now, if there's a reason to distinguish them.
my argument is basically to put back how this database has always worked,
First, it didn't always work the way that you described; second, when we did it that way, it led to political infighting that was unrelated to timekeeping, which is why the guideline was changed slightly. There are no timekeeping reasons to change the guideline back, only political reasons; but changing it back would lead us back into political minefields that are better avoided. Here's another way to look at it. We should insulate the tz database as much as possible from political instabilities, and that includes instabilities that entail changes to ISO 3166. If we do this, the tz database will be more stable than if we don't do it. And stability is good, right?
On 2 September 2013 09:00, Paul Eggert <eggert@cs.ucla.edu> wrote:
Stephen Colebourne wrote:
- LMT isn't enough reason for a separate "full" zone
In that case, there's no reason to separate America/St_Thomas from America/Tortola, right? They differ only in LMT, so they could be links.
Assuming I've googled their locations correctly, they are in two different countries. I'm just about happy to accept Europe/Zagreb -> Europe/Belgrade (in the main files), thus I'm also just about happy to accept America/St_Thomas <--> America/Tortola (in the main files, and assuming there is no other data being lost). This is an example of data sharing, not data removal. That said, given that those two IDs aren't broken and aren't causing anyone any pain, I would strongly advise just leaving them well alone. One of the key principles the tzdb should have is only to have change for enhancements. Refactoring isn't helpful for stability and causes unecessary debates like this. If it isn't broken then do not fix it.
if you remove the "backward" file today We are not going to remove the "backward" file. It's part of the database and is not going away. That being said, perhaps we can discuss why you have qualms about moving some of the Link directives to 'backward'. Are you trying to distinguish zone renaming from other maintenance activities? We haven't done that systematically in the past, but perhaps we should start now, if there's a reason to distinguish them.
I'm referring to how end-users preceive that file (as deprecated entries), and thus some end-user code will treat entries in that file differently from entries in the main files. That may include simply not including the "backward" file at all when they parse data (outside of zic). Here is how I believe the tzdb has worked: - the "main files" consist of all the database files except "backward" - the "main files" are standalone - all Zone/Rule/Link entries in the "main files" are complete, sensible and rational if "backward" is not processed - the "backward" file is for those IDs that have been renamed Given this, it should be no surprise that I am arguing that IDs like Europe/Zagreb should be in the main files. Currently, the zone.tab file has entries for places like Europe/Zagreb that point to the backward file. That is something I object to, and the proposed patch fixes. (There really should be checkawk-like tests to ensure that everything is correct when "backward" is excluded by end users).
my argument is basically to put back how this database has always worked,
First, it didn't always work the way that you described; second, when we did it that way, it led to political infighting that was unrelated to timekeeping, which is why the guideline was changed slightly. There are no timekeeping reasons to change the guideline back, only political reasons; but changing it back would lead us back into political minefields that are better avoided.
ISO-3166 has been a part of the tzdb for at least 17 years https://github.com/eggert/tz/commits/master/iso3166.tab It is as much a part of the data here as the time-zone data. Consumers of the data can and will use it to provide lookup from the most commonly used country/territory code to time-zones - a lookup that is very useful and desirable. Your commit following the Theory change included an unpopular zone.tab change that made ISO codes point at zones with names that were offensive to many (Croatia forced to use Belgrade for example) https://github.com/eggert/tz/commit/df99923bde035a263493f3435db63db15df14d53 As such you reverted it: https://github.com/eggert/tz/commit/ee40570d7d937de749fe89676dec2ff1526ee68b BUT, you only reverted a small part of the change (that to zone.tab) not the whole change. Despite having seen the measure of opposition to not respecting ISO-3166 you have continued to try to change the database - "revolution not evolution" as one commenter put it. You say "unrelated to timekeeping". I say, timekeeping *is* politics. All choices wrt what the local time is are the result of those in power and thus political. Evidence being the comments in the data files that contiinually refer to governments and decrees. You say that putting this back leads "political minefields". I say, that removing it has created the minefields. Evidence being the resistence to the commits you've been making on the back of that change, not least because of the Balkans (a minefield that would not have occurred if you had left well alone)
Here's another way to look at it. We should insulate the tz database as much as possible from political instabilities, and that includes instabilities that entail changes to ISO 3166. If we do this, the tz database will be more stable than if we don't do it. And stability is good, right?
Its an odd definition of stability that removes data, breaks connections to ISO-3166, annoys those who have recently fought wars and generally performs change that the group did not and has not provided you with the consensus to make. We need to come to closure on this. Either you're willing to revert the changes or you're not. thanks Stephen
Stephen Colebourne wrote:
Currently, the zone.tab file has entries for places like Europe/Zagreb that point to the backward file. That is something I object to
Well, as I said, I view that as purely an internal maintenance issue, but I can see your point of view as well. Since there are evidently real concerns about this, and since it doesn't matter that much from my point of view, I'll propose moving those Link directives back to 'northamerica' and 'southamerica'. This should be the next proposed-patch email coming from me.
I'm just about happy to accept Europe/Zagreb -> Europe/Belgrade (in the main files), thus I'm also just about happy to accept America/St_Thomas <--> America/Tortola (in the main files, and assuming there is no other data being lost)
OK, I'll propose a change along these lines as well. That'll be in a followon patch email.
Refactoring isn't helpful for stability and causes unecessary debates like this.
But this is more than refactoring: it's simplification. It lessens the number of TZ settings that users need to worry about, which is a Good Thing. It lessens our exposure to future political hassles, also a Good Thing. And it shrinks the size of the binary tz data a bit, which is another win.
ISO-3166 ... is as much a part of the data here as the time-zone data.
Maybe a bit of history here would be helpful. By design, the time-zone data are primary, and the ISO 3166 data is secondary. Arthur David Olson designed the time-zone data format originally. I designed the zone.tab and iso3166.tab formats as add-ons later, purely to help users choose TZ values; those tables were deliberately designed to be separable from the primary data, and the primary data can easily be (and often are) used without them.
On 3 September 2013 08:01, Paul Eggert <eggert@cs.ucla.edu> wrote:
Stephen Colebourne wrote:
Currently, the zone.tab file has entries for places like Europe/Zagreb that point to the backward file. That is something I object to
Well, as I said, I view that as purely an internal maintenance issue, but I can see your point of view as well. Since there are evidently real concerns about this, and since it doesn't matter that much from my point of view, I'll propose moving those Link directives back to 'northamerica' and 'southamerica'. This should be the next proposed-patch email coming from me.
Just to note that Norbert's recent email re ECMAscript locates this proposed standard: http://norbertlindenberg.com/ecmascript/intl.html#sec-6.4.2 The section explicitly uses the "backward" file to canonicalize the zone ID.
Refactoring isn't helpful for stability and causes unecessary debates like this.
But this is more than refactoring: it's simplification. It lessens the number of TZ settings that users need to worry about, which is a Good Thing. It lessens our exposure to future political hassles, also a Good Thing. And it shrinks the size of the binary tz data a bit, which is another win.
Personally I have no problem with changes in zic that shrink the output binary file. (In JSR-310 I have the entire tzdb in a binary form of less than 40Kb). Its the source data I'm seeking to look after. I'm being careful not to say no refactoing at all, but I'm advising that it seems that change is more of a driver of hassles than no-change.
ISO-3166 ... is as much a part of the data here as the time-zone data.
Maybe a bit of history here would be helpful. By design, the time-zone data are primary, and the ISO 3166 data is secondary. Arthur David Olson designed the time-zone data format originally. I designed the zone.tab and iso3166.tab formats as add-ons later, purely to help users choose TZ values; those tables were deliberately designed to be separable from the primary data, and the primary data can easily be (and often are) used without them.
Agreed that the ISO-3166 data is additional, although the Theroy rule was not. However, once something exists for so long (17 years) it becomes a core item. Stephen
participants (7)
-
Derick Rethans -
Guy Harris -
Lester Caine -
Norbert Lindenberg -
Paul Eggert -
Russ Allbery -
Stephen Colebourne