[tz] [PROPOSED 3/3] Vanguard form now uses subsecond precision
Stephen Colebourne
scolebourne at joda.org
Fri Jul 29 07:03:51 UTC 2022
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 at 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
>
More information about the tz
mailing list