[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