[tz] [PROPOSED 3/3] Vanguard form now uses subsecond precision

Kris Breuker kris at webhare.nl
Thu Jul 28 09:40:12 UTC 2022


> Op 28 jul. 2022, om 07:02 heeft Paul Eggert via tz <tz at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Apply-subsecond-precision-to-Amsterdam-Mean-Time.patch
Type: application/octet-stream
Size: 911 bytes
Desc: not available
URL: <https://mm.icann.org/pipermail/tz/attachments/20220728/373b5a5e/0001-Apply-subsecond-precision-to-Amsterdam-Mean-Time.patch>


More information about the tz mailing list