[tz] Some rules in tz specification files seem to be applied (by zic) outside of their declared period of applicability
Parsifal Herzog
parsifal.herzog at parz.ca
Tue Jan 15 20:48:37 UTC 2019
In the example shown below, copied from from tzdata2018i Africa file,
the last Zone line,
referencing the Namibia rule, should start at 1990 March 21 2:00 am.
There are no
Namibia transitions defined from that start, until 1994. However zic
does create a transition
using the second Namibia rule at the start time, as shown in the zdump
output below.
There are many other cases like this, where an UNTIL specification ends
well before the
next applicable rule of the following zone line.
I am trying to read the zic manual page as a specification, and I do not
understand why
zic inserts that transition. It seems to me that either the last Zone
line (SAST) would
remain in effect until 1994, as there is no other transition defined, or
that period is in
an undefined state, as the SAST transition is not in effect after1990
March 21.
Can someone correct my understanding?
------- Specification extract
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# Vanguard section, for zic and other parsers that support negative DST.
Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
1:30 - +0130 1903 Mar
2:00 - SAST 1942 Sep 20 2:00
2:00 1:00 SAST 1943 Mar 21 2:00
2:00 - SAST 1990 Mar 21 # independence
# Vanguard section, for zic and other parsers that support negative DST.
2:00 Namibia %s
------ Zicdump output:
$ zdump -v -c 1892,1996 Africa/Windhoek
Africa/Windhoek -9223372036854775808 = NULL
Africa/Windhoek -9223372036854689408 = NULL
Africa/Windhoek Sun Feb 7 22:51:35 1892 UT = Sun Feb 7 23:59:59 1892
LMT isdst=0 gmtoff=4104
Africa/Windhoek Sun Feb 7 22:51:36 1892 UT = Mon Feb 8 00:21:36 1892
+0130 isdst=0 gmtoff=5400
Africa/Windhoek Sat Feb 28 22:29:59 1903 UT = Sat Feb 28 23:59:59 1903
+0130 isdst=0 gmtoff=5400
Africa/Windhoek Sat Feb 28 22:30:00 1903 UT = Sun Mar 1 00:30:00 1903
SAST isdst=0 gmtoff=7200
Africa/Windhoek Sat Sep 19 23:59:59 1942 UT = Sun Sep 20 01:59:59 1942
SAST isdst=0 gmtoff=7200
Africa/Windhoek Sun Sep 20 00:00:00 1942 UT = Sun Sep 20 03:00:00 1942
SAST isdst=1 gmtoff=10800
Africa/Windhoek Sat Mar 20 22:59:59 1943 UT = Sun Mar 21 01:59:59 1943
SAST isdst=1 gmtoff=10800
Africa/Windhoek Sat Mar 20 23:00:00 1943 UT = Sun Mar 21 01:00:00 1943
SAST isdst=0 gmtoff=7200
Africa/Windhoek Tue Mar 20 21:59:59 1990 UT = Tue Mar 20 23:59:59 1990
SAST isdst=0 gmtoff=7200
Africa/Windhoek Tue Mar 20 22:00:00 1990 UT = Wed Mar 21 00:00:00 1990
CAT isdst=0 gmtoff=7200 <------ zic inserted the 1994 "CAT"
transition. How was this chosen?
Africa/Windhoek Sun Mar 20 21:59:59 1994 UT = Sun Mar 20 23:59:59 1994
CAT isdst=0 gmtoff=7200
Africa/Windhoek Sun Mar 20 22:00:00 1994 UT = Sun Mar 20 23:00:00 1994
WAT isdst=1 gmtoff=3600 <----- first applicable rule in 1994.
Africa/Windhoek Sun Sep 4 00:59:59 1994 UT = Sun Sep 4 01:59:59 1994
WAT isdst=1 gmtoff=3600
Africa/Windhoek Sun Sep 4 01:00:00 1994 UT = Sun Sep 4 03:00:00 1994
CAT isdst=0 gmtoff=7200
Africa/Windhoek Sat Apr 1 23:59:59 1995 UT = Sun Apr 2 01:59:59 1995
CAT isdst=0 gmtoff=7200
Africa/Windhoek Sun Apr 2 00:00:00 1995 UT = Sun Apr 2 01:00:00 1995
WAT isdst=1 gmtoff=3600
Africa/Windhoek Sun Sep 3 00:59:59 1995 UT = Sun Sep 3 01:59:59 1995
WAT isdst=1 gmtoff=3600
Africa/Windhoek Sun Sep 3 01:00:00 1995 UT = Sun Sep 3 03:00:00 1995
CAT isdst=0 gmtoff=7200
Africa/Windhoek 9223372036854689407 = NULL
Africa/Windhoek 9223372036854775807 = NULL
-------
More information about the tz
mailing list