[PROPOSED 1/3] * theory.html: Source data can do subseconds.
--- theory.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/theory.html b/theory.html index bfadc4f0..2b14c511 100644 --- a/theory.html +++ b/theory.html @@ -723,8 +723,8 @@ href="https://www.dissentmagazine.org/blog/booked-a-global-history-of-time-vanes than what the <code><abbr>tz</abbr></code> code can handle. For example, from 1880 to 1916 clocks in Ireland observed Dublin Mean Time (estimated to be <abbr>UT</abbr> - −00:25:21.1), but the <code><abbr>tz</abbr></code> - code cannot represent the fractional second. + −00:25:21.1); although the <code><abbr>tz</abbr></code> + source data can represent the .1 second, TZif files and the code cannot. In practice these old specifications were rarely if ever implemented to subsecond precision. </li> -- 2.34.1
* europe (Europe/Dublin): Don’t imply that people changed their clocks by 21 seconds on 1880-08-02, as they surely didn’t. Instead, change the LMT approximation before then to be the same as DMT after then, which is what we do elsewhere (e.g., Europe/Paris). --- europe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/europe b/europe index e134efae..ec7ac5c6 100644 --- a/europe +++ b/europe @@ -538,7 +538,7 @@ Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - Rule Eire 1996 max - Oct lastSun 1:00u -1:00 - # Zone NAME STDOFF RULES FORMAT [UNTIL] -Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 +Zone Europe/Dublin -0:25:21 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00s -0:25:21 1:00 IST 1916 Oct 1 2:00s 0:00 GB-Eire %s 1921 Dec 6 # independence -- 2.34.1
* NEWS: Mention this. * africa, asia, europe, northamerica, southamerica: Add comments for Zone and continuation lines that should have subsecond precision. * ziguard.awk (round_to_second, get_rounding_subst): New functions. (BEGIN): New initializations. (DATAFORM != "main"): Use the comments to prefer subsecond precision in vanguard form, whole seconds otherwise. * europe (Atlantic/Madeira): Fix typo in vanguard section. --- NEWS | 10 +++++++++- africa | 3 ++- asia | 19 ++++++++++++------- europe | 13 +++++++------ northamerica | 18 +++++++++++------- southamerica | 15 ++++++++++++++- ziguard.awk | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 108 insertions(+), 23 deletions(-) diff --git a/NEWS b/NEWS index 34621ed3..fdc87544 100644 --- a/NEWS +++ b/NEWS @@ -6,7 +6,7 @@ Unreleased, experimental changes Iran no longer observes DST after 2022. Rename Europe/Kiev to Europe/Kyiv. New zic -R option - Vanguard form now uses %z. + Vanguard form now uses %z and subsecond precision. New tailored_tarballs target, replacing rearguard_tarballs Changes to future timestamps @@ -71,6 +71,14 @@ Unreleased, experimental changes to use %z eventually; in the meantime maintainers of zi parsers are encouraged to test the parsers on vanguard.zi. + Source data in vanguard form now uses subsecond precision, + introduced in release 2018d. For example, for America/New_York + the UT offset before 1883-11-18 is now -4:56:01.6, and the + transition time that day is now 12:03:58.4. Although TZif files + have only 1-second resolution so zic rounds these values to + -4:56:02 and 12:03:58 respectively, programs other than zic can + use the extra precision in the few cases where it is available. + The Makefile has a new tailored_tarballs target for generating special-purpose tarballs. It generalizes and replaces the rearguard_tarballs target and related targets and macros, which diff --git a/africa b/africa index b398f66d..382f5794 100644 --- a/africa +++ b/africa @@ -169,7 +169,7 @@ Link Africa/Abidjan Atlantic/St_Helena # St Helena # Egypt # Milne says Cairo used 2:05:08.9, the local mean time of the Abbasizeh -# observatory; round to nearest. Milne also says that the official time for +# observatory. Milne also says that the official time for # Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this # did not apply to Cairo, Alexandria, or Port Said. @@ -354,6 +354,7 @@ Rule Egypt 2014 only - Jul 31 24:00 1:00 S Rule Egypt 2014 only - Sep lastThu 24:00 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 2:05:08.9 Zone Africa/Cairo 2:05:09 - LMT 1900 Oct 2:00 Egypt EE%sT diff --git a/asia b/asia index ff65a048..468d2c1c 100644 --- a/asia +++ b/asia @@ -542,7 +542,7 @@ Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D # Zhongyuan Time ("Central plain Time") UT +08 # Now part of Asia/Shanghai. # most of China -# Milne gives 8:05:43.2 for Xujiahui Observatory time; round to nearest. +# Milne gives 8:05:43.2 for Xujiahui Observatory time.... # Guo says Shanghai switched to UT +08 "from the end of the 19th century". # # Long-shu Time (probably as Long and Shu were two names of the area) UT +07 @@ -661,6 +661,7 @@ Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D # Zone NAME STDOFF RULES FORMAT [UNTIL] # Beijing time, used throughout China; represented by Shanghai. + #STDOFF 8:05:43.2 Zone Asia/Shanghai 8:05:43 - LMT 1901 8:00 Shang C%sT 1949 May 28 8:00 PRC C%sT @@ -672,7 +673,7 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928 # Hong Kong -# Milne gives 7:36:41.7; round this. +# Milne gives 7:36:41.7. # From Lee Yiu Chung (2009-10-24): # I found there are some mistakes for the...DST rule for Hong @@ -856,6 +857,7 @@ Rule HK 1973 only - Dec 30 3:30 1:00 S Rule HK 1979 only - May 13 3:30 1:00 S Rule HK 1979 only - Oct 21 3:30 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 7:36:41.7 0:36:41.7 Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 30 0:36:42 8:00 - HKT 1941 Jun 15 3:00 8:00 1:00 HKST 1941 Oct 1 4:00 @@ -1331,7 +1333,7 @@ Zone Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 # Kolkata # # From Paul Eggert (2014-09-06): # The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia -# civil time was 7:07:12.5; round to even for Jakarta. +# civil time was 7:07:12.5. # # From Gwillim Law (2001-05-28), overriding Shanks & Pottenger: # http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime @@ -1367,6 +1369,7 @@ Zone Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 # Kolkata # # Zone NAME STDOFF RULES FORMAT [UNTIL] # Java, Sumatra + #STDOFF 7:07:12.5 Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10 # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13, # but this must be a typo. @@ -3868,7 +3871,8 @@ Zone Asia/Samarkand 4:27:53 - LMT 1924 May 2 6:00 - +06 1982 Apr 1 5:00 RussiaAsia +05/+06 1992 5:00 - +05 -# Milne says Tashkent was 4:37:10.8; round to nearest. +# Milne says Tashkent was 4:37:10.8. + #STDOFF 4:37:10.8 Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 5:00 - +05 1930 Jun 21 6:00 RussiaAsia +06/+07 1991 Mar 31 2:00 @@ -3887,7 +3891,7 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # The English-language name of Vietnam's most populous city is "Ho Chi Minh # City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters. -# From Paul Eggert (2014-10-21) after a heads-up from Trần Ngọc Quân: +# From Paul Eggert (2022-07-27) after a 2014 heads-up from Trần Ngọc Quân: # Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)" # (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50, # is quoted verbatim in: @@ -3899,8 +3903,8 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # The 1906 transition was effective July 1 and standardized Indochina to # Phù Liễn Observatory, legally 104° 17' 17" east of Paris. # It's unclear whether this meant legal Paris Mean Time (00:09:21) or -# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333... -# and the latter 07:06:29.333... so either way it rounds to 07:06:30, +# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333..., +# the latter 07:06:29.333..., and for now guess the former, # which is used below even though the modern-day Phù Liễn Observatory # is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT. # @@ -3927,6 +3931,7 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # NXB Thuận Hoá, Huế, 1995. # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 7:06:30.133333333 Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jul 1 7:06:30 - PLMT 1911 May 1 # Phù Liễn MT 7:00 - +07 1942 Dec 31 23:00 diff --git a/europe b/europe index ec7ac5c6..0bed8891 100644 --- a/europe +++ b/europe @@ -303,8 +303,7 @@ # UT-00:25:22 and cites the International Telegraph Bureau. As it is # not clear that there was any practical significance to the change # from UT-00:25:22 to UT-00:25:21.1 in civil timekeeping, omit this -# transition for now and just use the latter value, omitting its -# fraction since our format cannot represent fractions. +# transition for now and just use the latter value. # "Countess Markievicz ... claimed that the [1916] abolition of Dublin Mean Time # was among various actions undertaken by the 'English' government that @@ -538,6 +537,7 @@ Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - Rule Eire 1996 max - Oct lastSun 1:00u -1:00 - # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -0:25:21.1 Zone Europe/Dublin -0:25:21 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00s -0:25:21 1:00 IST 1916 Oct 1 2:00s @@ -1298,10 +1298,10 @@ Rule Finland 1942 only - Oct 4 1:00 0 - Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S Rule Finland 1981 1982 - Sep lastSun 3:00 0 - -# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document); -# round to nearest. +# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document). # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 1:39:49.2 Zone Europe/Helsinki 1:39:49 - LMT 1878 May 31 1:39:49 - HMT 1921 May # Helsinki Mean Time 2:00 Finland EE%sT 1983 @@ -2304,7 +2304,6 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880 # According to a Portuguese decree (1911-05-26) # https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf # Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00. -# Round the old offset to -0:36:45. This agrees with Willett.... # # From Michael Deckers (2018-02-15): # article 5 [of the 1911 decree; Deckers's translation] ...: @@ -2391,6 +2390,7 @@ Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S Rule Port 1983 only - Mar lastSun 2:00s 1:00 S # # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -0:36:44.68 Zone Europe/Lisbon -0:36:45 - LMT 1884 -0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT 0:00 Port WE%sT 1966 Apr 3 2:00 @@ -3034,11 +3034,12 @@ Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0:00u # Note: Effective 2005-12-01, (59) Perm Oblast and (81) Komi-Permyak # Autonomous Okrug merged to form (90, RU-PER) Perm Krai. -# Milne says Yekaterinburg was 4:02:32.9; round to nearest. +# Milne says Yekaterinburg was 4:02:32.9. # Byalokoz 1919 says its provincial time was based on Perm, at 3:45:05. # Assume it switched on 1916-07-03, the time of the new standard. # The 1919 and 1930 transitions are from Shanks. + #STDOFF 4:02:32.9 Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3 3:45:05 - PMT 1919 Jul 15 4:00 4:00 - +04 1930 Jun 21 diff --git a/northamerica b/northamerica index fb5c94bb..a8858698 100644 --- a/northamerica +++ b/northamerica @@ -344,8 +344,7 @@ Zone PST8PDT -8:00 US P%sT # From Paul Eggert (2014-09-06): # Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208 # says that New York City Hall time was 3 minutes 58.4 seconds fast of -# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the -# nearest second. +# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. # Rule NAME FROM TO - IN ON AT SAVE LETTER Rule NYC 1920 only - Mar lastSun 2:00 1:00 D @@ -354,6 +353,7 @@ Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D Rule NYC 1921 1954 - Sep lastSun 2:00 0 S Rule NYC 1955 1966 - Oct lastSun 2:00 0 S # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:56:01.6 12:03:58.4 Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58 -5:00 US E%sT 1920 -5:00 NYC E%sT 1942 @@ -2818,7 +2818,7 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56 # Barbados -# For 1899 Milne gives -3:58:29.2; round that. +# For 1899 Milne gives -3:58:29.2. # From P Chan (2020-12-09 and 2020-12-11): # Standard time of GMT-4 was adopted in 1911. @@ -2862,6 +2862,7 @@ Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D Rule Barb 1979 only - Sep 30 2:00 0 S Rule Barb 1980 only - Sep 25 2:00 0 S # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -3:58:29.2 Zone America/Barbados -3:58:29 - LMT 1911 Aug 28 # Bridgetown -4:00 Barb A%sT 1944 -4:00 Barb AST/-0330 1945 @@ -2922,10 +2923,10 @@ Zone America/Belize -5:52:48 - LMT 1912 Apr 1 # Bermuda -# From Paul Eggert (2020-11-24): +# From Paul Eggert (2022-07-27): # For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower, # Bermuda dockyard, Ireland I. This agrees with standard offset given in the -# Daylight Saving Act, 1917 cited below. Round that to the nearest second. +# Daylight Saving Act, 1917 cited below. # It is not known when this time became standard for Bermuda; guess 1890. # The transition to -04 was specified by: # 1930: The Time Zone Act, 1929 (1929: No. 39) [1929-11-08] @@ -3020,6 +3021,7 @@ Rule Bermuda 1956 only - May Sun>=22 2:00 1:00 D Rule Bermuda 1956 only - Oct lastSun 2:00 0 S # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:19:18.3 Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton -4:19:18 Bermuda BMT/BST 1930 Jan 1 2:00 -4:00 Bermuda A%sT 1974 Apr 28 2:00 @@ -3034,7 +3036,7 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton # Costa Rica -# Milne gives -5:36:13.3 as San José mean time; round to nearest. +# Milne gives -5:36:13.3 as San José mean time. # Rule NAME FROM TO - IN ON AT SAVE LETTER/S Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D @@ -3046,6 +3048,7 @@ Rule CR 1991 only - Jul 1 0:00 0 S Rule CR 1992 only - Mar 15 0:00 0 S # There are too many San Josés elsewhere, so we'll use 'Costa Rica'. # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -5:36:13.3 Zone America/Costa_Rica -5:36:13 - LMT 1890 # San José -5:36:13 - SJMT 1921 Jan 15 # San José Mean Time -6:00 CR C%sT @@ -3468,7 +3471,7 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr # Jamaica # Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an # unspecified official document, and says "This time is used throughout the -# island". Go with Milne. Round to the nearest second as required by zic. +# island". Go with Milne. # # Shanks & Pottenger give April 28 for the 1974 spring-forward transition, but # Lance Neita writes that Prime Minister Michael Manley decreed it January 5. @@ -3481,6 +3484,7 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647 # # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -5:07:10.41 Zone America/Jamaica -5:07:10 - LMT 1890 # Kingston -5:07:10 - KMT 1912 Feb # Kingston Mean Time -5:00 - EST 1974 diff --git a/southamerica b/southamerica index 7b0b084f..55336a2a 100644 --- a/southamerica +++ b/southamerica @@ -400,6 +400,7 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 - # # Buenos Aires (BA), Capital Federal (CF), Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May # Córdoba Mean Time -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -417,6 +418,7 @@ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 # - Santiago del Estero switched to -4:00 on 1991-04-01, # then to -3:00 on 1991-04-26. # + #STDOFF -4:16:48.25 Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec @@ -429,6 +431,7 @@ Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 # # Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN) Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -441,6 +444,7 @@ Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31 # # Tucumán (TM) Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -454,6 +458,7 @@ Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 # # La Rioja (LR) Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -468,6 +473,7 @@ Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 # # San Juan (SJ) Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -482,6 +488,7 @@ Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 # # Jujuy (JY) Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -497,6 +504,7 @@ Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 # # Catamarca (CT), Chubut (CH) Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -511,6 +519,7 @@ Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 # # Mendoza (MZ) Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -533,6 +542,7 @@ Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 - Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 - Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -551,6 +561,7 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 # # Santa Cruz (SC) Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -563,6 +574,7 @@ Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 # # Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF) Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -1390,13 +1402,14 @@ Zone Antarctica/Palmer 0 - -00 1965 # Colombia -# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes, +# Milne gives 4:56:16.4 for Bogotá time in 1899. He writes, # "A variation of fifteen minutes in the public clocks of Bogota is not rare." # Rule NAME FROM TO - IN ON AT SAVE LETTER/S Rule CO 1992 only - May 3 0:00 1:00 - Rule CO 1993 only - Apr 4 0:00 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:56:16.4 Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 -4:56:16 - BMT 1914 Nov 23 # Bogotá Mean Time -5:00 CO -05/-04 diff --git a/ziguard.awk b/ziguard.awk index 91f68962..171b952d 100644 --- a/ziguard.awk +++ b/ziguard.awk @@ -50,6 +50,35 @@ function offset_abbr(offset, \ } } +# Round TIMESTAMP (a +-hh:mm:ss.dddd string) to the nearest second. +function round_to_second(timestamp, \ + hh, mm, ss, seconds, dot_dddd, subseconds) +{ + dot_dddd = timestamp + if (!sub(/^[+-]?[0-9]+:[0-9]+:[0-9]+\./, ".", dot_dddd)) + return timestamp + hh = mm = ss = timestamp + sub(/^[-+]?[0-9]+:[0-9]+:/, "", ss) + sub(/^[-+]?[0-9]+:/, "", mm) + sub(/^[-+]?/, "", hh) + seconds = 3600 * hh + 60 * mm + ss + subseconds = +dot_dddd + seconds += 0.5 < subseconds || ((subseconds == 0.5) && (seconds % 2)); + return sprintf("%s%d:%.2d:%.2d", timestamp ~ /^-/ ? "-" : "", \ + seconds / 3600, seconds / 60 % 60, seconds % 60) +} + +function get_rounding_subst(time, subst) +{ + if (DATAFORM == "vanguard") { + subst[0] = round_to_second(time) + subst[1] = time + } else { + subst[0] = time + subst[1] = round_to_second(time) + } +} + BEGIN { dataform_type["vanguard"] = 1 dataform_type["main"] = 1 @@ -57,6 +86,9 @@ BEGIN { # The command line should set DATAFORM. if (!dataform_type[DATAFORM]) exit 1 + + stdoff_subst[0] = 0 + until_subst[0] = 0 } /^Zone/ { zone = $2 } @@ -175,6 +207,27 @@ DATAFORM != "main" { } } + # Prefer subseconds in vanguard form, whole seconds otherwise. + if ($1 == "#STDOFF") { + get_rounding_subst($2, stdoff_subst) + if ($3) { + get_rounding_subst($3, until_subst) + } else { + until_subst[0] = 0 + } + } else if (stdoff_subst[0]) { + stdoff_column = 2 * /^Zone/ + 1 + stdoff_column_val = $stdoff_column + if (stdoff_column_val == stdoff_subst[0]) { + $stdoff_column = stdoff_subst[1] + if (until_subst[0] && $NF == until_subst[0]) { + $NF = until_subst[1] + } + } else if (stdoff_column_val != stdoff_subst[1]) { + stdoff_subst[0] = 0 + } + } + if (DATAFORM == "rearguard") { # In rearguard form, change the Japan rule line with "Sat>=8 25:00" -- 2.34.1
Op 28 jul. 2022, om 07:02 heeft Paul Eggert via tz <tz@iana.org> het volgende geschreven:
* NEWS: Mention this. * africa, asia, europe, northamerica, southamerica: Add comments for Zone and continuation lines that should have subsecond precision. * ziguard.awk (round_to_second, get_rounding_subst): New functions. (BEGIN): New initializations. (DATAFORM != "main"): Use the comments to prefer subsecond precision in vanguard form, whole seconds otherwise.
* europe (Atlantic/Madeira): Fix typo in vanguard section. --- NEWS | 10 +++++++++- africa | 3 ++- asia | 19 ++++++++++++------- europe | 13 +++++++------ northamerica | 18 +++++++++++------- southamerica | 15 ++++++++++++++- ziguard.awk | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 108 insertions(+), 23 deletions(-)
diff --git a/NEWS b/NEWS index 34621ed3..fdc87544 100644 --- a/NEWS +++ b/NEWS @@ -6,7 +6,7 @@ Unreleased, experimental changes Iran no longer observes DST after 2022. Rename Europe/Kiev to Europe/Kyiv. New zic -R option - Vanguard form now uses %z. + Vanguard form now uses %z and subsecond precision. New tailored_tarballs target, replacing rearguard_tarballs
Changes to future timestamps @@ -71,6 +71,14 @@ Unreleased, experimental changes to use %z eventually; in the meantime maintainers of zi parsers are encouraged to test the parsers on vanguard.zi.
+ Source data in vanguard form now uses subsecond precision, + introduced in release 2018d. For example, for America/New_York + the UT offset before 1883-11-18 is now -4:56:01.6, and the + transition time that day is now 12:03:58.4. Although TZif files + have only 1-second resolution so zic rounds these values to + -4:56:02 and 12:03:58 respectively, programs other than zic can + use the extra precision in the few cases where it is available. + The Makefile has a new tailored_tarballs target for generating special-purpose tarballs. It generalizes and replaces the rearguard_tarballs target and related targets and macros, which diff --git a/africa b/africa index b398f66d..382f5794 100644 --- a/africa +++ b/africa @@ -169,7 +169,7 @@ Link Africa/Abidjan Atlantic/St_Helena # St Helena # Egypt
# Milne says Cairo used 2:05:08.9, the local mean time of the Abbasizeh -# observatory; round to nearest. Milne also says that the official time for +# observatory. Milne also says that the official time for # Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this # did not apply to Cairo, Alexandria, or Port Said.
@@ -354,6 +354,7 @@ Rule Egypt 2014 only - Jul 31 24:00 1:00 S Rule Egypt 2014 only - Sep lastThu 24:00 0 -
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 2:05:08.9 Zone Africa/Cairo 2:05:09 - LMT 1900 Oct 2:00 Egypt EE%sT
diff --git a/asia b/asia index ff65a048..468d2c1c 100644 --- a/asia +++ b/asia @@ -542,7 +542,7 @@ Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D # Zhongyuan Time ("Central plain Time") UT +08 # Now part of Asia/Shanghai. # most of China -# Milne gives 8:05:43.2 for Xujiahui Observatory time; round to nearest. +# Milne gives 8:05:43.2 for Xujiahui Observatory time.... # Guo says Shanghai switched to UT +08 "from the end of the 19th century". # # Long-shu Time (probably as Long and Shu were two names of the area) UT +07 @@ -661,6 +661,7 @@ Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
# Zone NAME STDOFF RULES FORMAT [UNTIL] # Beijing time, used throughout China; represented by Shanghai. + #STDOFF 8:05:43.2 Zone Asia/Shanghai 8:05:43 - LMT 1901 8:00 Shang C%sT 1949 May 28 8:00 PRC C%sT @@ -672,7 +673,7 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928
# Hong Kong
-# Milne gives 7:36:41.7; round this. +# Milne gives 7:36:41.7.
# From Lee Yiu Chung (2009-10-24): # I found there are some mistakes for the...DST rule for Hong @@ -856,6 +857,7 @@ Rule HK 1973 only - Dec 30 3:30 1:00 S Rule HK 1979 only - May 13 3:30 1:00 S Rule HK 1979 only - Oct 21 3:30 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 7:36:41.7 0:36:41.7 Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 30 0:36:42 8:00 - HKT 1941 Jun 15 3:00 8:00 1:00 HKST 1941 Oct 1 4:00 @@ -1331,7 +1333,7 @@ Zone Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 # Kolkata # # From Paul Eggert (2014-09-06): # The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia -# civil time was 7:07:12.5; round to even for Jakarta. +# civil time was 7:07:12.5. # # From Gwillim Law (2001-05-28), overriding Shanks & Pottenger: # http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime @@ -1367,6 +1369,7 @@ Zone Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 # Kolkata # # Zone NAME STDOFF RULES FORMAT [UNTIL] # Java, Sumatra + #STDOFF 7:07:12.5 Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10 # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13, # but this must be a typo. @@ -3868,7 +3871,8 @@ Zone Asia/Samarkand 4:27:53 - LMT 1924 May 2 6:00 - +06 1982 Apr 1 5:00 RussiaAsia +05/+06 1992 5:00 - +05 -# Milne says Tashkent was 4:37:10.8; round to nearest. +# Milne says Tashkent was 4:37:10.8. + #STDOFF 4:37:10.8 Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 5:00 - +05 1930 Jun 21 6:00 RussiaAsia +06/+07 1991 Mar 31 2:00 @@ -3887,7 +3891,7 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # The English-language name of Vietnam's most populous city is "Ho Chi Minh # City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters.
-# From Paul Eggert (2014-10-21) after a heads-up from Trần Ngọc Quân: +# From Paul Eggert (2022-07-27) after a 2014 heads-up from Trần Ngọc Quân: # Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)" # (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50, # is quoted verbatim in: @@ -3899,8 +3903,8 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # The 1906 transition was effective July 1 and standardized Indochina to # Phù Liễn Observatory, legally 104° 17' 17" east of Paris. # It's unclear whether this meant legal Paris Mean Time (00:09:21) or -# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333... -# and the latter 07:06:29.333... so either way it rounds to 07:06:30, +# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333..., +# the latter 07:06:29.333..., and for now guess the former, # which is used below even though the modern-day Phù Liễn Observatory # is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT. # @@ -3927,6 +3931,7 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # NXB Thuận Hoá, Huế, 1995.
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 7:06:30.133333333 Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jul 1 7:06:30 - PLMT 1911 May 1 # Phù Liễn MT 7:00 - +07 1942 Dec 31 23:00 diff --git a/europe b/europe index ec7ac5c6..0bed8891 100644 --- a/europe +++ b/europe @@ -303,8 +303,7 @@ # UT-00:25:22 and cites the International Telegraph Bureau. As it is # not clear that there was any practical significance to the change # from UT-00:25:22 to UT-00:25:21.1 in civil timekeeping, omit this -# transition for now and just use the latter value, omitting its -# fraction since our format cannot represent fractions. +# transition for now and just use the latter value.
# "Countess Markievicz ... claimed that the [1916] abolition of Dublin Mean Time # was among various actions undertaken by the 'English' government that @@ -538,6 +537,7 @@ Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -0:25:21.1 Zone Europe/Dublin -0:25:21 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00s -0:25:21 1:00 IST 1916 Oct 1 2:00s @@ -1298,10 +1298,10 @@ Rule Finland 1942 only - Oct 4 1:00 0 - Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S Rule Finland 1981 1982 - Sep lastSun 3:00 0 -
-# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document); -# round to nearest. +# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document).
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 1:39:49.2 Zone Europe/Helsinki 1:39:49 - LMT 1878 May 31 1:39:49 - HMT 1921 May # Helsinki Mean Time 2:00 Finland EE%sT 1983 @@ -2304,7 +2304,6 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880 # According to a Portuguese decree (1911-05-26) # https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf # Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00. -# Round the old offset to -0:36:45. This agrees with Willett.... # # From Michael Deckers (2018-02-15): # article 5 [of the 1911 decree; Deckers's translation] ...: @@ -2391,6 +2390,7 @@ Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S Rule Port 1983 only - Mar lastSun 2:00s 1:00 S # # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -0:36:44.68 Zone Europe/Lisbon -0:36:45 - LMT 1884 -0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT 0:00 Port WE%sT 1966 Apr 3 2:00 @@ -3034,11 +3034,12 @@ Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0:00u # Note: Effective 2005-12-01, (59) Perm Oblast and (81) Komi-Permyak # Autonomous Okrug merged to form (90, RU-PER) Perm Krai.
-# Milne says Yekaterinburg was 4:02:32.9; round to nearest. +# Milne says Yekaterinburg was 4:02:32.9. # Byalokoz 1919 says its provincial time was based on Perm, at 3:45:05. # Assume it switched on 1916-07-03, the time of the new standard. # The 1919 and 1930 transitions are from Shanks.
+ #STDOFF 4:02:32.9 Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3 3:45:05 - PMT 1919 Jul 15 4:00 4:00 - +04 1930 Jun 21 diff --git a/northamerica b/northamerica index fb5c94bb..a8858698 100644 --- a/northamerica +++ b/northamerica @@ -344,8 +344,7 @@ Zone PST8PDT -8:00 US P%sT # From Paul Eggert (2014-09-06): # Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208 # says that New York City Hall time was 3 minutes 58.4 seconds fast of -# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the -# nearest second. +# Eastern time (i.e., -4:56:01.6) just before the 1883 switch.
# Rule NAME FROM TO - IN ON AT SAVE LETTER Rule NYC 1920 only - Mar lastSun 2:00 1:00 D @@ -354,6 +353,7 @@ Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D Rule NYC 1921 1954 - Sep lastSun 2:00 0 S Rule NYC 1955 1966 - Oct lastSun 2:00 0 S # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:56:01.6 12:03:58.4 Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58 -5:00 US E%sT 1920 -5:00 NYC E%sT 1942 @@ -2818,7 +2818,7 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
# Barbados
-# For 1899 Milne gives -3:58:29.2; round that. +# For 1899 Milne gives -3:58:29.2.
# From P Chan (2020-12-09 and 2020-12-11): # Standard time of GMT-4 was adopted in 1911. @@ -2862,6 +2862,7 @@ Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D Rule Barb 1979 only - Sep 30 2:00 0 S Rule Barb 1980 only - Sep 25 2:00 0 S # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -3:58:29.2 Zone America/Barbados -3:58:29 - LMT 1911 Aug 28 # Bridgetown -4:00 Barb A%sT 1944 -4:00 Barb AST/-0330 1945 @@ -2922,10 +2923,10 @@ Zone America/Belize -5:52:48 - LMT 1912 Apr 1
# Bermuda
-# From Paul Eggert (2020-11-24): +# From Paul Eggert (2022-07-27): # For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower, # Bermuda dockyard, Ireland I. This agrees with standard offset given in the -# Daylight Saving Act, 1917 cited below. Round that to the nearest second. +# Daylight Saving Act, 1917 cited below. # It is not known when this time became standard for Bermuda; guess 1890. # The transition to -04 was specified by: # 1930: The Time Zone Act, 1929 (1929: No. 39) [1929-11-08] @@ -3020,6 +3021,7 @@ Rule Bermuda 1956 only - May Sun>=22 2:00 1:00 D Rule Bermuda 1956 only - Oct lastSun 2:00 0 S
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:19:18.3 Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton -4:19:18 Bermuda BMT/BST 1930 Jan 1 2:00 -4:00 Bermuda A%sT 1974 Apr 28 2:00 @@ -3034,7 +3036,7 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton
# Costa Rica
-# Milne gives -5:36:13.3 as San José mean time; round to nearest. +# Milne gives -5:36:13.3 as San José mean time.
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D @@ -3046,6 +3048,7 @@ Rule CR 1991 only - Jul 1 0:00 0 S Rule CR 1992 only - Mar 15 0:00 0 S # There are too many San Josés elsewhere, so we'll use 'Costa Rica'. # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -5:36:13.3 Zone America/Costa_Rica -5:36:13 - LMT 1890 # San José -5:36:13 - SJMT 1921 Jan 15 # San José Mean Time -6:00 CR C%sT @@ -3468,7 +3471,7 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr # Jamaica # Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an # unspecified official document, and says "This time is used throughout the -# island". Go with Milne. Round to the nearest second as required by zic. +# island". Go with Milne. # # Shanks & Pottenger give April 28 for the 1974 spring-forward transition, but # Lance Neita writes that Prime Minister Michael Manley decreed it January 5. @@ -3481,6 +3484,7 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647 # # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -5:07:10.41 Zone America/Jamaica -5:07:10 - LMT 1890 # Kingston -5:07:10 - KMT 1912 Feb # Kingston Mean Time -5:00 - EST 1974 diff --git a/southamerica b/southamerica index 7b0b084f..55336a2a 100644 --- a/southamerica +++ b/southamerica @@ -400,6 +400,7 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 - # # Buenos Aires (BA), Capital Federal (CF), Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May # Córdoba Mean Time -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -417,6 +418,7 @@ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 # - Santiago del Estero switched to -4:00 on 1991-04-01, # then to -3:00 on 1991-04-26. # + #STDOFF -4:16:48.25 Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec @@ -429,6 +431,7 @@ Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 # # Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN) Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -441,6 +444,7 @@ Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31 # # Tucumán (TM) Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -454,6 +458,7 @@ Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 # # La Rioja (LR) Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -468,6 +473,7 @@ Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 # # San Juan (SJ) Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -482,6 +488,7 @@ Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 # # Jujuy (JY) Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -497,6 +504,7 @@ Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 # # Catamarca (CT), Chubut (CH) Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -511,6 +519,7 @@ Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 # # Mendoza (MZ) Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -533,6 +542,7 @@ Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 - Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -551,6 +561,7 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 # # Santa Cruz (SC) Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -563,6 +574,7 @@ Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 # # Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF) Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -1390,13 +1402,14 @@ Zone Antarctica/Palmer 0 - -00 1965
# Colombia
-# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes, +# Milne gives 4:56:16.4 for Bogotá time in 1899. He writes, # "A variation of fifteen minutes in the public clocks of Bogota is not rare."
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S Rule CO 1992 only - May 3 0:00 1:00 - Rule CO 1993 only - Apr 4 0:00 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:56:16.4 Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 -4:56:16 - BMT 1914 Nov 23 # Bogotá Mean Time -5:00 CO -05/-04 diff --git a/ziguard.awk b/ziguard.awk index 91f68962..171b952d 100644 --- a/ziguard.awk +++ b/ziguard.awk @@ -50,6 +50,35 @@ function offset_abbr(offset, \ } }
+# Round TIMESTAMP (a +-hh:mm:ss.dddd string) to the nearest second. +function round_to_second(timestamp, \ + hh, mm, ss, seconds, dot_dddd, subseconds) +{ + dot_dddd = timestamp + if (!sub(/^[+-]?[0-9]+:[0-9]+:[0-9]+\./, ".", dot_dddd)) + return timestamp + hh = mm = ss = timestamp + sub(/^[-+]?[0-9]+:[0-9]+:/, "", ss) + sub(/^[-+]?[0-9]+:/, "", mm) + sub(/^[-+]?/, "", hh) + seconds = 3600 * hh + 60 * mm + ss + subseconds = +dot_dddd + seconds += 0.5 < subseconds || ((subseconds == 0.5) && (seconds % 2)); + return sprintf("%s%d:%.2d:%.2d", timestamp ~ /^-/ ? "-" : "", \ + seconds / 3600, seconds / 60 % 60, seconds % 60) +} + +function get_rounding_subst(time, subst) +{ + if (DATAFORM == "vanguard") { + subst[0] = round_to_second(time) + subst[1] = time + } else { + subst[0] = time + subst[1] = round_to_second(time) + } +} + BEGIN { dataform_type["vanguard"] = 1 dataform_type["main"] = 1 @@ -57,6 +86,9 @@ BEGIN {
# The command line should set DATAFORM. if (!dataform_type[DATAFORM]) exit 1 + + stdoff_subst[0] = 0 + until_subst[0] = 0 }
/^Zone/ { zone = $2 } @@ -175,6 +207,27 @@ DATAFORM != "main" { } }
+ # Prefer subseconds in vanguard form, whole seconds otherwise. + if ($1 == "#STDOFF") { + get_rounding_subst($2, stdoff_subst) + if ($3) { + get_rounding_subst($3, until_subst) + } else { + until_subst[0] = 0 + } + } else if (stdoff_subst[0]) { + stdoff_column = 2 * /^Zone/ + 1 + stdoff_column_val = $stdoff_column + if (stdoff_column_val == stdoff_subst[0]) { + $stdoff_column = stdoff_subst[1] + if (until_subst[0] && $NF == until_subst[0]) { + $NF = until_subst[1] + } + } else if (stdoff_column_val != stdoff_subst[1]) { + stdoff_subst[0] = 0 + } + } + if (DATAFORM == "rearguard") {
# In rearguard form, change the Japan rule line with "Sat>=8 25:00" -- 2.34.1
The attached patch applies subsecond precision to Amsterdam Mean Time (GMT+19:32.13), probably missed because the comment didn’t use the word ‘round’. Kind regards, Kris Breuker
On Wed 2022-07-27T22:02:41-0700 Paul Eggert via tz hath writ:
+ Source data in vanguard form now uses subsecond precision, + introduced in release 2018d. For example, for America/New_York + the UT offset before 1883-11-18 is now -4:56:01.6, and the + transition time that day is now 12:03:58.4. Although TZif files + have only 1-second resolution so zic rounds these values to + -4:56:02 and 12:03:58 respectively, programs other than zic can + use the extra precision in the few cases where it is available.
I urge that tz never attempt to encode zone offsets with precision better than 1 millisecond. During the early 20th century broadcast signals of time disagreed by more than one second. Ongoing improvements in determination of time were summarized by Anna Stoyko of BIH in 1963 https://www.ucolick.org/~sla/leapsecs/BHsHn05p142.html Note that those plots of time differences are *after* removing persistent systematic differences of 0.03 s or more which resulted from inconsistencies in the conventional longitudes of observatories. Millisecond agreement of broadcast time signals was not achieved until the 1960s when they were based on cesium atomic chronometers rather than direct astronomical observation. -- Steve Allen <sla@ucolick.org> WGS-84 (GPS) UCO/Lick Observatory--ISB 260 Natural Sciences II, Room 165 Lat +36.99855 1156 High Street Voice: +1 831 459 3046 Lng -122.06015 Santa Cruz, CA 95064 https://www.ucolick.org/~sla/ Hgt +250 m
On 7/28/22 10:40, Steve Allen via tz wrote:
I urge that tz never attempt to encode zone offsets with precision better than 1 millisecond.
There's one instance of that in the patch, the "7:06:30.133333333" that comes from calculating 104° 17′ 17″ east of Paris Mean Time (00:09:21). The law in question gave a precision of 1 arc second for longitude, which works out to a precision of 66⅔ ms for UT offset. I used nine digits because POSIX timestamps have nanosecond precision, and so if tzcode ever gets support for non-integer UT offsets the closest POSIX approximation to legal time would need the nine digits. (POSIX timestamps do not indicate their precision, unfortunately.) There's a tension here between trying to make a potential POSIX implementation as close as possible, vs following the usual scientific practice where the number of digits indicates the precision and where "7:06:30.133333333" should presumably be replaced by "7:06:30.13" to reflect the 66⅔ ms precision. (Or should the last "3" be removed too? I'm a bit fuzzy on how best to express fuzziness when "X±Y" notation is not available....)
On Thu 2022-07-28T12:02:15-0700 Paul Eggert hath writ:
On 7/28/22 10:40, Steve Allen via tz wrote:
I urge that tz never attempt to encode zone offsets with precision better than 1 millisecond.
There's one instance of that in the patch, the "7:06:30.133333333" that comes from calculating 104 deg 17' 17" east of Paris Mean Time (00:09:21). The law in question gave a precision of 1 arc second for longitude, which works out to a precision of 66 2/3 ms for UT offset.
That comes from the tzdata asia file for Phu Lien Observatory. That entry gives Paris Meridian as 2 deg 20' 14.03" E with no citation. Every historical value of longitude needs an accompanying citation. The 1911 law for France gave legal time as Greenwich -00h 09m 21s The 1911 law is the government of France saying we want Greenwich without saying Greenwich, and that sub-second time is not relevant to them -- the astronomers can figure it out at that level based on what is obvious but not explicitly stated in the law. The 1913/1914 radio longitude effort by USNO and Paris using 50 kW spark gap transmitters found for Observatoire de Paris Greenwich -00h 09m 20.932s or 2 deg 20' 13.980" E At the time of the first World Operation in Longitude 1926 the value used for Observatoire de Paris was Greenwich -00h 09m 20.930s or 2 deg 20' 13.950" E After the 2nd World Operations in Longitude 1933 and before 1962 the conventional longitude of Observatoire de Paris for computing time was Greenwich -00h 09m 20.935s or 2 deg 20' 13.815" E That is the value of the offset which was used for France until after radio broadcast time signals started being based on cesium atomic chronometers. Starting 1962 the conventional longitude for Observatoire de Paris was Greenwich -00h 09m 20.921s 2 deg 20' 14.025" E but by then that was moot for radio time signals because BIH was coordinating the worldwide broadcasts of smeared seconds based on cesium atomic chronometers. The current WGS longitude of the Paris Meridian is about 2 deg 20' 11.5" E, but that is geodetic, not astronomical. There is no way that the longitude of Indochina was known to the accuracy of 0.01 s of time in 1906, before radio transmission and reception were possible. Please do not attempt sub-millisecond time offsets for astronomical time. When these conventional longitudes were in use the clocks in the observatories could not easily stay stable to 0.01 s per day. Corrections to the observatory clocks had to be computed and tabulated based on meridian observations of stars and a conventional longitude. Clocks did not tell what time it was. Clocks were a way of interpolating between the moments when it was possible to see a catalog star and compute the next tabulated offset to the time the clock was telling, but before radio (and even after radio because of the fickle ionosphere) all determinations of time were intermingled with a poorly-determined longitude that was not globally self-consistent. -- Steve Allen <sla@ucolick.org> WGS-84 (GPS) UCO/Lick Observatory--ISB 260 Natural Sciences II, Room 165 Lat +36.99855 1156 High Street Voice: +1 831 459 3046 Lng -122.06015 Santa Cruz, CA 95064 https://www.ucolick.org/~sla/ Hgt +250 m
On 7/28/22 16:07, Steve Allen via tz wrote:
That comes from the tzdata asia file for Phu Lien Observatory. That entry gives Paris Meridian as 2 deg 20' 14.03" E with no citation.
Every historical value of longitude needs an accompanying citation.
Thanks. Sorry to have induced you to go to all that work in digging up historical measurements of the Paris Meridian, as the current datum doesn't depend on the exact value. It's simpler, I think, to remove that longitude from the comments as that will save us the trouble of picking and citing a longitude. Done in the attached patch.
Please do not attempt sub-millisecond time offsets for astronomical time.
Sure, but if our understanding is correct, the cool thing about the GMT offset in Vietnam from 1906 to 1911 is that it wasn't astronomical time. That is, what we're calling Paris Mean Time was defined by French law to be 9 minutes 21 seconds east of GMT; and what we're calling Phù Liễn Mean Time was defined by law to be 104° 17′ 17″ east of Paris Mean Time. Neither of these numbers are astronomical; they're both legal numbers, and so their sum is a legal number, and has infinite precision (since French lawyers don't admit to any imprecision :-). That being said, this is currently academic since tzcode isn't using the subsecond values, and I take your point that the actual offset was not accurate to 9 places even with the best technology of the time. So I installed the attached further proposed patch, which rounds to the nearest centisecond (and fixes one other, more important thing), and I hope that is good enough.
On Thu 2022-07-28T17:01:31-0700 Paul Eggert hath writ:
Thanks. Sorry to have induced you to go to all that work in digging up historical measurements of the Paris Meridian, as the current datum doesn't depend on the exact value. It's simpler, I think, to remove that longitude from the comments as that will save us the trouble of picking and citing a longitude. Done in the attached patch.
Rounding to 0.01 s is the right thing to do. In the 1920s, the first decade of operation, the BIH only attempted to specify time differences to 0.01 s between European observatories with the best clocks and equipment. The story of time in Indochina must still be richer than is in tzdata. One of the early radio broadcasts monitored as part of the work of the BIH was the station in Saigon. Time signals from Saigon began for the first World Operation in Longitude during 1926 October/November. See the picture in the New York Times article from 1925 https://www.nytimes.com/1925/09/06/archives/scientists-to-test-drift-of-cont... These were rhythmic signals which provided Greenwich Mean Time, so time-zone-like time was available to any site with a radio receiver. Those signals continued routinely until 1941-12-08 when the BIH described (my translation) After 1941 December 8, in effect, the station, only having one emitter, found it necessary, on many dates, to sacrifice the time signals for exigencies of traffic. -- Steve Allen <sla@ucolick.org> WGS-84 (GPS) UCO/Lick Observatory--ISB 260 Natural Sciences II, Room 165 Lat +36.99855 1156 High Street Voice: +1 831 459 3046 Lng -122.06015 Santa Cruz, CA 95064 https://www.ucolick.org/~sla/ Hgt +250 m
On Thu 2022-07-28T17:01:31-0700 Paul Eggert hath writ:
Thanks. Sorry to have induced you to go to all that work in digging up historical measurements of the Paris Meridian, as the current datum doesn't depend on the exact value. It's simpler, I think, to remove that longitude from the comments as that will save us the trouble of picking and citing a longitude. Done in the attached patch.
Not a lot of work. The Paris/Greenwich offset was a topic of concern from the 18th century. For most of the story see https://doi.org/10.1017/S0007087413000988
-# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333..., -# the latter 07:06:29.333..., and for now guess the former, +# the Paris Meridian; for now guess the former and round the exact +# 07:06:30.1333... to 07:06:30.13 as the legal spec used 66 2/3 ms precision.
This is still bothersome because of that Paris longitude. A value of 14.03 for the arc seconds is a time value of 9m 20.935 s. No recent measurement had a value that large. Using either 20.93 or 20.932 for the Paris Observatory the offset of this zone in 1906 would be 7:06:30.06 -- Steve Allen <sla@ucolick.org> WGS-84 (GPS) UCO/Lick Observatory--ISB 260 Natural Sciences II, Room 165 Lat +36.99855 1156 High Street Voice: +1 831 459 3046 Lng -122.06015 Santa Cruz, CA 95064 https://www.ucolick.org/~sla/ Hgt +250 m
FWIW, while I'm content that this is for Vanguard only, I don't personally think this change should be made. I see no value in adding sub-second precision to time-zone offset data beyond the comments. No system is likely to make practical use of it, and it is unlikely to be correct in most locations (is the plan to change LMT everywhere? if so why?) . I also note that this change seems to be focussed on pre-1970 data, which does not seem to be a good choice. Stephen On Thu, 28 Jul 2022 at 06:03, Paul Eggert via tz <tz@iana.org> wrote:
* NEWS: Mention this. * africa, asia, europe, northamerica, southamerica: Add comments for Zone and continuation lines that should have subsecond precision. * ziguard.awk (round_to_second, get_rounding_subst): New functions. (BEGIN): New initializations. (DATAFORM != "main"): Use the comments to prefer subsecond precision in vanguard form, whole seconds otherwise.
* europe (Atlantic/Madeira): Fix typo in vanguard section. --- NEWS | 10 +++++++++- africa | 3 ++- asia | 19 ++++++++++++------- europe | 13 +++++++------ northamerica | 18 +++++++++++------- southamerica | 15 ++++++++++++++- ziguard.awk | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 108 insertions(+), 23 deletions(-)
diff --git a/NEWS b/NEWS index 34621ed3..fdc87544 100644 --- a/NEWS +++ b/NEWS @@ -6,7 +6,7 @@ Unreleased, experimental changes Iran no longer observes DST after 2022. Rename Europe/Kiev to Europe/Kyiv. New zic -R option - Vanguard form now uses %z. + Vanguard form now uses %z and subsecond precision. New tailored_tarballs target, replacing rearguard_tarballs
Changes to future timestamps @@ -71,6 +71,14 @@ Unreleased, experimental changes to use %z eventually; in the meantime maintainers of zi parsers are encouraged to test the parsers on vanguard.zi.
+ Source data in vanguard form now uses subsecond precision, + introduced in release 2018d. For example, for America/New_York + the UT offset before 1883-11-18 is now -4:56:01.6, and the + transition time that day is now 12:03:58.4. Although TZif files + have only 1-second resolution so zic rounds these values to + -4:56:02 and 12:03:58 respectively, programs other than zic can + use the extra precision in the few cases where it is available. + The Makefile has a new tailored_tarballs target for generating special-purpose tarballs. It generalizes and replaces the rearguard_tarballs target and related targets and macros, which diff --git a/africa b/africa index b398f66d..382f5794 100644 --- a/africa +++ b/africa @@ -169,7 +169,7 @@ Link Africa/Abidjan Atlantic/St_Helena # St Helena # Egypt
# Milne says Cairo used 2:05:08.9, the local mean time of the Abbasizeh -# observatory; round to nearest. Milne also says that the official time for +# observatory. Milne also says that the official time for # Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this # did not apply to Cairo, Alexandria, or Port Said.
@@ -354,6 +354,7 @@ Rule Egypt 2014 only - Jul 31 24:00 1:00 S Rule Egypt 2014 only - Sep lastThu 24:00 0 -
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 2:05:08.9 Zone Africa/Cairo 2:05:09 - LMT 1900 Oct 2:00 Egypt EE%sT
diff --git a/asia b/asia index ff65a048..468d2c1c 100644 --- a/asia +++ b/asia @@ -542,7 +542,7 @@ Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D # Zhongyuan Time ("Central plain Time") UT +08 # Now part of Asia/Shanghai. # most of China -# Milne gives 8:05:43.2 for Xujiahui Observatory time; round to nearest. +# Milne gives 8:05:43.2 for Xujiahui Observatory time.... # Guo says Shanghai switched to UT +08 "from the end of the 19th century". # # Long-shu Time (probably as Long and Shu were two names of the area) UT +07 @@ -661,6 +661,7 @@ Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
# Zone NAME STDOFF RULES FORMAT [UNTIL] # Beijing time, used throughout China; represented by Shanghai. + #STDOFF 8:05:43.2 Zone Asia/Shanghai 8:05:43 - LMT 1901 8:00 Shang C%sT 1949 May 28 8:00 PRC C%sT @@ -672,7 +673,7 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928
# Hong Kong
-# Milne gives 7:36:41.7; round this. +# Milne gives 7:36:41.7.
# From Lee Yiu Chung (2009-10-24): # I found there are some mistakes for the...DST rule for Hong @@ -856,6 +857,7 @@ Rule HK 1973 only - Dec 30 3:30 1:00 S Rule HK 1979 only - May 13 3:30 1:00 S Rule HK 1979 only - Oct 21 3:30 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 7:36:41.7 0:36:41.7 Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 30 0:36:42 8:00 - HKT 1941 Jun 15 3:00 8:00 1:00 HKST 1941 Oct 1 4:00 @@ -1331,7 +1333,7 @@ Zone Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 # Kolkata # # From Paul Eggert (2014-09-06): # The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia -# civil time was 7:07:12.5; round to even for Jakarta. +# civil time was 7:07:12.5. # # From Gwillim Law (2001-05-28), overriding Shanks & Pottenger: # http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime @@ -1367,6 +1369,7 @@ Zone Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 # Kolkata # # Zone NAME STDOFF RULES FORMAT [UNTIL] # Java, Sumatra + #STDOFF 7:07:12.5 Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10 # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13, # but this must be a typo. @@ -3868,7 +3871,8 @@ Zone Asia/Samarkand 4:27:53 - LMT 1924 May 2 6:00 - +06 1982 Apr 1 5:00 RussiaAsia +05/+06 1992 5:00 - +05 -# Milne says Tashkent was 4:37:10.8; round to nearest. +# Milne says Tashkent was 4:37:10.8. + #STDOFF 4:37:10.8 Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 5:00 - +05 1930 Jun 21 6:00 RussiaAsia +06/+07 1991 Mar 31 2:00 @@ -3887,7 +3891,7 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # The English-language name of Vietnam's most populous city is "Ho Chi Minh # City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters.
-# From Paul Eggert (2014-10-21) after a heads-up from Trần Ngọc Quân: +# From Paul Eggert (2022-07-27) after a 2014 heads-up from Trần Ngọc Quân: # Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)" # (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50, # is quoted verbatim in: @@ -3899,8 +3903,8 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # The 1906 transition was effective July 1 and standardized Indochina to # Phù Liễn Observatory, legally 104° 17' 17" east of Paris. # It's unclear whether this meant legal Paris Mean Time (00:09:21) or -# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333... -# and the latter 07:06:29.333... so either way it rounds to 07:06:30, +# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333..., +# the latter 07:06:29.333..., and for now guess the former, # which is used below even though the modern-day Phù Liễn Observatory # is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT. # @@ -3927,6 +3931,7 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # NXB Thuận Hoá, Huế, 1995.
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 7:06:30.133333333 Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jul 1 7:06:30 - PLMT 1911 May 1 # Phù Liễn MT 7:00 - +07 1942 Dec 31 23:00 diff --git a/europe b/europe index ec7ac5c6..0bed8891 100644 --- a/europe +++ b/europe @@ -303,8 +303,7 @@ # UT-00:25:22 and cites the International Telegraph Bureau. As it is # not clear that there was any practical significance to the change # from UT-00:25:22 to UT-00:25:21.1 in civil timekeeping, omit this -# transition for now and just use the latter value, omitting its -# fraction since our format cannot represent fractions. +# transition for now and just use the latter value.
# "Countess Markievicz ... claimed that the [1916] abolition of Dublin Mean Time # was among various actions undertaken by the 'English' government that @@ -538,6 +537,7 @@ Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -0:25:21.1 Zone Europe/Dublin -0:25:21 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00s -0:25:21 1:00 IST 1916 Oct 1 2:00s @@ -1298,10 +1298,10 @@ Rule Finland 1942 only - Oct 4 1:00 0 - Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S Rule Finland 1981 1982 - Sep lastSun 3:00 0 -
-# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document); -# round to nearest. +# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document).
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF 1:39:49.2 Zone Europe/Helsinki 1:39:49 - LMT 1878 May 31 1:39:49 - HMT 1921 May # Helsinki Mean Time 2:00 Finland EE%sT 1983 @@ -2304,7 +2304,6 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880 # According to a Portuguese decree (1911-05-26) # https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf # Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00. -# Round the old offset to -0:36:45. This agrees with Willett.... # # From Michael Deckers (2018-02-15): # article 5 [of the 1911 decree; Deckers's translation] ...: @@ -2391,6 +2390,7 @@ Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S Rule Port 1983 only - Mar lastSun 2:00s 1:00 S # # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -0:36:44.68 Zone Europe/Lisbon -0:36:45 - LMT 1884 -0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT 0:00 Port WE%sT 1966 Apr 3 2:00 @@ -3034,11 +3034,12 @@ Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0:00u # Note: Effective 2005-12-01, (59) Perm Oblast and (81) Komi-Permyak # Autonomous Okrug merged to form (90, RU-PER) Perm Krai.
-# Milne says Yekaterinburg was 4:02:32.9; round to nearest. +# Milne says Yekaterinburg was 4:02:32.9. # Byalokoz 1919 says its provincial time was based on Perm, at 3:45:05. # Assume it switched on 1916-07-03, the time of the new standard. # The 1919 and 1930 transitions are from Shanks.
+ #STDOFF 4:02:32.9 Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3 3:45:05 - PMT 1919 Jul 15 4:00 4:00 - +04 1930 Jun 21 diff --git a/northamerica b/northamerica index fb5c94bb..a8858698 100644 --- a/northamerica +++ b/northamerica @@ -344,8 +344,7 @@ Zone PST8PDT -8:00 US P%sT # From Paul Eggert (2014-09-06): # Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208 # says that New York City Hall time was 3 minutes 58.4 seconds fast of -# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the -# nearest second. +# Eastern time (i.e., -4:56:01.6) just before the 1883 switch.
# Rule NAME FROM TO - IN ON AT SAVE LETTER Rule NYC 1920 only - Mar lastSun 2:00 1:00 D @@ -354,6 +353,7 @@ Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D Rule NYC 1921 1954 - Sep lastSun 2:00 0 S Rule NYC 1955 1966 - Oct lastSun 2:00 0 S # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:56:01.6 12:03:58.4 Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58 -5:00 US E%sT 1920 -5:00 NYC E%sT 1942 @@ -2818,7 +2818,7 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
# Barbados
-# For 1899 Milne gives -3:58:29.2; round that. +# For 1899 Milne gives -3:58:29.2.
# From P Chan (2020-12-09 and 2020-12-11): # Standard time of GMT-4 was adopted in 1911. @@ -2862,6 +2862,7 @@ Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D Rule Barb 1979 only - Sep 30 2:00 0 S Rule Barb 1980 only - Sep 25 2:00 0 S # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -3:58:29.2 Zone America/Barbados -3:58:29 - LMT 1911 Aug 28 # Bridgetown -4:00 Barb A%sT 1944 -4:00 Barb AST/-0330 1945 @@ -2922,10 +2923,10 @@ Zone America/Belize -5:52:48 - LMT 1912 Apr 1
# Bermuda
-# From Paul Eggert (2020-11-24): +# From Paul Eggert (2022-07-27): # For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower, # Bermuda dockyard, Ireland I. This agrees with standard offset given in the -# Daylight Saving Act, 1917 cited below. Round that to the nearest second. +# Daylight Saving Act, 1917 cited below. # It is not known when this time became standard for Bermuda; guess 1890. # The transition to -04 was specified by: # 1930: The Time Zone Act, 1929 (1929: No. 39) [1929-11-08] @@ -3020,6 +3021,7 @@ Rule Bermuda 1956 only - May Sun>=22 2:00 1:00 D Rule Bermuda 1956 only - Oct lastSun 2:00 0 S
# Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:19:18.3 Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton -4:19:18 Bermuda BMT/BST 1930 Jan 1 2:00 -4:00 Bermuda A%sT 1974 Apr 28 2:00 @@ -3034,7 +3036,7 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton
# Costa Rica
-# Milne gives -5:36:13.3 as San José mean time; round to nearest. +# Milne gives -5:36:13.3 as San José mean time.
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D @@ -3046,6 +3048,7 @@ Rule CR 1991 only - Jul 1 0:00 0 S Rule CR 1992 only - Mar 15 0:00 0 S # There are too many San Josés elsewhere, so we'll use 'Costa Rica'. # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -5:36:13.3 Zone America/Costa_Rica -5:36:13 - LMT 1890 # San José -5:36:13 - SJMT 1921 Jan 15 # San José Mean Time -6:00 CR C%sT @@ -3468,7 +3471,7 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr # Jamaica # Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an # unspecified official document, and says "This time is used throughout the -# island". Go with Milne. Round to the nearest second as required by zic. +# island". Go with Milne. # # Shanks & Pottenger give April 28 for the 1974 spring-forward transition, but # Lance Neita writes that Prime Minister Michael Manley decreed it January 5. @@ -3481,6 +3484,7 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647 # # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -5:07:10.41 Zone America/Jamaica -5:07:10 - LMT 1890 # Kingston -5:07:10 - KMT 1912 Feb # Kingston Mean Time -5:00 - EST 1974 diff --git a/southamerica b/southamerica index 7b0b084f..55336a2a 100644 --- a/southamerica +++ b/southamerica @@ -400,6 +400,7 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 - # # Buenos Aires (BA), Capital Federal (CF), Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May # Córdoba Mean Time -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -417,6 +418,7 @@ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 # - Santiago del Estero switched to -4:00 on 1991-04-01, # then to -3:00 on 1991-04-26. # + #STDOFF -4:16:48.25 Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec @@ -429,6 +431,7 @@ Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 # # Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN) Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -441,6 +444,7 @@ Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31 # # Tucumán (TM) Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -454,6 +458,7 @@ Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 # # La Rioja (LR) Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -468,6 +473,7 @@ Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 # # San Juan (SJ) Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -482,6 +488,7 @@ Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 # # Jujuy (JY) Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -497,6 +504,7 @@ Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 # # Catamarca (CT), Chubut (CH) Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -511,6 +519,7 @@ Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 # # Mendoza (MZ) Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -533,6 +542,7 @@ Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 - Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -551,6 +561,7 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 # # Santa Cruz (SC) Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -563,6 +574,7 @@ Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 # # Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF) Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31 + #STDOFF -4:16:48.25 -4:16:48 - CMT 1920 May -4:00 - -04 1930 Dec -4:00 Arg -04/-03 1969 Oct 5 @@ -1390,13 +1402,14 @@ Zone Antarctica/Palmer 0 - -00 1965
# Colombia
-# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes, +# Milne gives 4:56:16.4 for Bogotá time in 1899. He writes, # "A variation of fifteen minutes in the public clocks of Bogota is not rare."
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S Rule CO 1992 only - May 3 0:00 1:00 - Rule CO 1993 only - Apr 4 0:00 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] + #STDOFF -4:56:16.4 Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 -4:56:16 - BMT 1914 Nov 23 # Bogotá Mean Time -5:00 CO -05/-04 diff --git a/ziguard.awk b/ziguard.awk index 91f68962..171b952d 100644 --- a/ziguard.awk +++ b/ziguard.awk @@ -50,6 +50,35 @@ function offset_abbr(offset, \ } }
+# Round TIMESTAMP (a +-hh:mm:ss.dddd string) to the nearest second. +function round_to_second(timestamp, \ + hh, mm, ss, seconds, dot_dddd, subseconds) +{ + dot_dddd = timestamp + if (!sub(/^[+-]?[0-9]+:[0-9]+:[0-9]+\./, ".", dot_dddd)) + return timestamp + hh = mm = ss = timestamp + sub(/^[-+]?[0-9]+:[0-9]+:/, "", ss) + sub(/^[-+]?[0-9]+:/, "", mm) + sub(/^[-+]?/, "", hh) + seconds = 3600 * hh + 60 * mm + ss + subseconds = +dot_dddd + seconds += 0.5 < subseconds || ((subseconds == 0.5) && (seconds % 2)); + return sprintf("%s%d:%.2d:%.2d", timestamp ~ /^-/ ? "-" : "", \ + seconds / 3600, seconds / 60 % 60, seconds % 60) +} + +function get_rounding_subst(time, subst) +{ + if (DATAFORM == "vanguard") { + subst[0] = round_to_second(time) + subst[1] = time + } else { + subst[0] = time + subst[1] = round_to_second(time) + } +} + BEGIN { dataform_type["vanguard"] = 1 dataform_type["main"] = 1 @@ -57,6 +86,9 @@ BEGIN {
# The command line should set DATAFORM. if (!dataform_type[DATAFORM]) exit 1 + + stdoff_subst[0] = 0 + until_subst[0] = 0 }
/^Zone/ { zone = $2 } @@ -175,6 +207,27 @@ DATAFORM != "main" { } }
+ # Prefer subseconds in vanguard form, whole seconds otherwise. + if ($1 == "#STDOFF") { + get_rounding_subst($2, stdoff_subst) + if ($3) { + get_rounding_subst($3, until_subst) + } else { + until_subst[0] = 0 + } + } else if (stdoff_subst[0]) { + stdoff_column = 2 * /^Zone/ + 1 + stdoff_column_val = $stdoff_column + if (stdoff_column_val == stdoff_subst[0]) { + $stdoff_column = stdoff_subst[1] + if (until_subst[0] && $NF == until_subst[0]) { + $NF = until_subst[1] + } + } else if (stdoff_column_val != stdoff_subst[1]) { + stdoff_subst[0] = 0 + } + } + if (DATAFORM == "rearguard") {
# In rearguard form, change the Japan rule line with "Sat>=8 25:00" -- 2.34.1
On Fri, 29 Jul 2022, 08:04 Stephen Colebourne via tz, <tz@iana.org> wrote:
FWIW, while I'm content that this is for Vanguard only, I don't personally think this change should be made.
I second this. From the perspective of Noda Time (the project I maintain) we decided long ago that the precision of UTC offsets would be one second. Basically this change will mean extra work for me to truncate back to seconds. (I'm pretty sure we're using the vanguard data - I'd need to double check.) Obviously the small inconvenience for one developer shouldn't be regarded as a veto, but I wanted to mention it as one data point. There are definitely costs to this - are there also known concrete benefits, in terms of consumers wanting to use this data? Jon
I strongly support the positions of Stephen and Jon. I recall we had a big precision discussion several years ago, and the arguments against changing the precision made then are just as applicable today. Howard On Jul 29, 2022, at 3:26 AM, Jon Skeet via tz <tz@iana.org> wrote:
On Fri, 29 Jul 2022, 08:04 Stephen Colebourne via tz, <tz@iana.org> wrote: FWIW, while I'm content that this is for Vanguard only, I don't personally think this change should be made.
I second this. From the perspective of Noda Time (the project I maintain) we decided long ago that the precision of UTC offsets would be one second.
Basically this change will mean extra work for me to truncate back to seconds. (I'm pretty sure we're using the vanguard data - I'd need to double check.)
Obviously the small inconvenience for one developer shouldn't be regarded as a veto, but I wanted to mention it as one data point. There are definitely costs to this - are there also known concrete benefits, in terms of consumers wanting to use this data?
Jon
I too wonder about the wisdom of this. Tzdb has been one-second resolution for decades. This has proven to be sufficient and acceptable for "civil time". I know of no call for higher resolution for local time. I'm all for better precision where needed, but I think this adds new complexity and risks interoperability issues. I see several difficulties that recommend against it. I think there could be significant controversy choosing a decimal fraction resolution. Steve Allen says it would be better to limit to milliseconds. I'd point out that DUT1 was decided to be 1/10th second because this was sufficient for celestial navigation at the time. Paul has mentioned many systems can represent nanoseconds, but Windows is 100-nanoseconds. European financial regulations call for 50 microseconds. Paul has now rounded to centisecond. So which is it? Should tzdb support *variable* resolution? In the work I'm doing for media (video/audio) representation we have some strange rates, or frequencies, to cope with, including 30000/1001 video and 48000/1 audio. Here we need *exact* integral counts of media units since the IEEE 1588 PTP "Epoch". This is tricky business to implement. A critical factor is determining 'start-of-day' (midnight) of local time. Thankfully Tzdb provides one-second resolution representation of local time rules. If this were to change it would greatly complicate these calculations. Also, I am supporting Vanguard (negative DST amongst things), and I'm doing this with versions of zic and zdump that I've ported to Windows, including parts of glibc. If these sorts of changes are made to the tz data and zic it will require merging those changes into my implementation and retesting tens of thousands of data points. I think this could possibly confuse policy makers about how best to define their local times in laws, etc. It could also tempt somebody to adopt sub-second offsets in their local time. This could open tzdb to yet another avenue of 'political' critique. I've great respect for Paul's skills and dedication and his instinct to be as true to the historical record as possible. But I think this is a bridge too far. "A second never lies". -Brooks On 2022-07-29 3:26 AM, Jon Skeet via tz wrote:
On Fri, 29 Jul 2022, 08:04 Stephen Colebourne via tz, <tz@iana.org <mailto:tz@iana.org>> wrote:
FWIW, while I'm content that this is for Vanguard only, I don't personally think this change should be made.
I second this. From the perspective of Noda Time (the project I maintain) we decided long ago that the precision of UTC offsets would be one second.
Basically this change will mean extra work for me to truncate back to seconds. (I'm pretty sure we're using the vanguard data - I'd need to double check.)
Obviously the small inconvenience for one developer shouldn't be regarded as a veto, but I wanted to mention it as one data point. There are definitely costs to this - are there also known concrete benefits, in terms of consumers wanting to use this data?
Jon
On 7/29/22 00:03, Stephen Colebourne via tz wrote:
I see no value in adding sub-second precision to time-zone offset data beyond the comments. No system is likely to make practical use of it, and it is unlikely to be correct in most locations (is the plan to change LMT everywhere? if so why?) .
No there was no plan to change LMT everywhere, as the LMT values are somewhat arbitrary. The idea was only to write down standard time when it was standardized to be some non-integer offset from UT. Given the other comments in this thread I'm inclined to revert the effect of this change, so that vanguard form continues to use integer multiples of a second. So I installed the attached further patches, the last of which does the reversion. These patches keep the structured comments about subseconds, though. In the future some downstream client may find the subsecond info useful, and if so it should be easy to change vanguard form accordingly (it should be a one-line change to ziguard.awk). So it might be useful for other .zi parsers to parse and discard the subsecond information the same way that zic does (i.e., by rounding to even as documented in zic.8). It's conceivable (though unlikely) that in the future some impractical politicians may rebel against the Western concept of "Universal Time" and insist on a non-integer UT offset. Something like this happened briefly in Beijing in 1949 (which attempted to impose apparent solar time, Qing dynasty style!), and there was a milder echo in 2015 when the North Korean government rebelled against JST. If a Beijing-style revolution occurs somewhere in the future it would break a lot of software, ours included; but if the revolution's leaders merely choose a non-integer UT offset we'll have an easy fix for tzdata.
Paul Eggert via tz <tz@iana.org> wrote on Sat, 30 Jul 2022 at 13:01:08 EDT in <4b52574b-92b9-8967-b857-e63d471ac8ff@cs.ucla.edu>:
It's conceivable (though unlikely) that in the future some impractical politicians may rebel against the Western concept of "Universal Time" and insist on a non-integer UT offset. Something like this happened briefly in Beijing in 1949 (which attempted to impose apparent solar time, Qing dynasty style!), and there was a milder echo in 2015 when the North Korean government rebelled against JST. If a Beijing-style revolution occurs somewhere in the future it would break a lot of software, ours included; but if the revolution's leaders merely choose a non-integer UT offset we'll have an easy fix for tzdata.
I would be concerned that leaving the code in-tree encourages such "rebellion," and that is not a technical good. *shrug* -- jhawk@alum.mit.edu John Hawkinson
On 2022-07-28 05:02, Paul Eggert via tz proposed changes in files:
africa | 3 ++- asia | 19 ++++++++++++------- europe | 13 +++++++------ northamerica | 18 +++++++++++------- southamerica | 15 ++++++++++++++-
In tzdb, the difference local mean time LMT - UT only plays a role for the switch from LMT to a grid time zone time (and sometimes back to LMT, as in Amsterdam). So the relevant quantity is LMT - UT as estimated at the time of this switch. In the best documented cases, the switch is precisely specified by law (as for Dublin); and one can assume that the legal authorities have specified the switch to (at least) a precision that they thought to be relevant for the local time observatories and the most demanding applications at the time (such as navigation). In less well documented cases, we have an estimate of LMT - UT by local authorities (eg, from Milne 1899) at an epoch close to that of the switch; if these local authorities used subsecond precision then we may assume that such precision was considered relevant. But where we do not have such estimates, subsecond precision seems to be unwarranted as it would imply the wrong uncertainty for the size of the jump. As a case in point, the estimate used in tzdb for LMT - UT at Jakarta comes from 1876, but the switch to the grid time zone time UT + 07:20 only happened in 1932. Clearly, the old estimate of LMT - UT cannot be taken as evidence at subsecond precision for the jump made 56 years later. Regardless of whether subsecond precision is justified in each case, the following points in the proposed changes also need attention: • Unsurprisingly, no change is proposed for backzone -- but this is bound to produce new inconsistencies: backzone/America/Cayman uses Kingston Mean Time KMT and should therefore be made consistent with America/Jamaica. • backzone/America/Rosario has not been maintained since 2002-04-04 (eg, it has wrong offset for Córdoba Mean Time CMT, has no DST 2007..2009). It should be dropped from tzdb since it is unclear how it is supposed to differ from America/Argentina/Buenos_Aires; otherwise it must be properly maintained, including the new offset for CMT. • Similarly, backzone/America/Argentina/ComodRivadavia does not agree with America/Argentina/Catamarca since 1970 because the former has not been maintained since 2005-08-22, while Catamarca has since been changed. (Having the sources in the same file certainly would have helped!) So ComodRivadavia does not even satisfy the purported criterion for members of backzone. Remove or maintain properly. • Zone Asia/Jakarta needs an UNTIL AT column #STDOFF 7:07:12.5 23:47:12.5 Michael Deckers.
On 8/1/22 12:57, Michael H Deckers wrote:
• Unsurprisingly, no change is proposed for backzone -- but this is bound to produce new inconsistencies:
Yes, 'backzone' has many glitches. Fixes in 'git format-patch' format would be welcome.
• Zone Asia/Jakarta needs an UNTIL AT column #STDOFF 7:07:12.5 23:47:12.5
Thanks for catching that. I installed the first attached patch. While looking into that, I noticed glitches related to a 2006 hack installed to work around old zic issues that I think are now irrelevant (zic has changed quite a bit to handle 32- vs 64-bit output) so I installed the second attached patch as well. Neither of these patches affect generated timestamps (e.g., zdump output is identical).
participants (9)
-
Brooks Harris -
Howard Hinnant -
John Hawkinson -
Jon Skeet -
Kris Breuker -
Michael H Deckers -
Paul Eggert -
Stephen Colebourne -
Steve Allen