[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