Expired Rules: How Should They Be Handled
Olson, Arthur David (NCI)
olsona at dc37a.nci.nih.gov
Thu Dec 14 21:08:51 UTC 2000
> I have written some software to reduce the "tzdata" files down
> to their current GMTOFF values with associated Rule usage. The
> software ends up acting as an integrity check on the database,
> i.e. it coughs up current expired Rule usage. The following
> Rules, which are current Rule in the indicated Zones, have all
> expired. How should/are these Zones handled if a user does
> a "setenv TZ " of one of them?
>
> Dave Skinner
> dave at nurh.jpl.nasa.gov
> ...
> Rule Ghana
> Zone Africa/Accra
> ...
> Rule Tunisia
> Zone Africa/Tunis
Pertinent stuff from the "africa" file is...
# Ghana
# Rule NAME FROM TO TYPE IN ON AT SAVE
LETTER/S
# Whitman says DST was observed from 1931 to ``the present''; go
with Shanks.
Rule Ghana 1936 1942 - Sep 1 0:00
0:20 GHST
Rule Ghana 1936 1942 - Dec 31 0:00
0 GMT
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Accra -0:00:52 - LMT
1918
0:00 Ghana %s
...so, indeed, time in Accra is calculated the same way at all instants from
the end of 1942 forward. However, the rule is kept to allow proper handling
of historic instants.
Doing so is more important in a case such as...
...
Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0
-
Rule Tunisia 1989 only - Mar 26
0:00s 1:00 S
Rule Tunisia 1990 only - May 1
0:00s 1:00 S
# Shanks gives 0:09 for Paris Mean Time; go with Howse's more
precise 0:09:21.
# Shanks says the 1911 switch occurred on Mar 9; go with Howse's Mar
11.
# Zone NAME GMTOFF RULES FORMAT
[UNTIL]
Zone Africa/Tunis 0:40:44 - LMT
1881 May 12
0:09:21 - PMT
1911 Mar 11
1:00 Tunisia
CE%sT
...where there were clock changes as late as 1990--after the UNIX epoch. If
you didn't keep the rules, running a program such as zdump would produce the
wrong output rather than what's shown below.
--ado
Script started on Thu Dec 14 16:07:09 2000
flower$ ./zdump -v Africa/Accra Africa/Tunis
Africa/Accra Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 20:45:00 1901 LMT
isdst=0
Africa/Accra Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 20:45:00 1901 LMT
isdst=0
Africa/Accra Tue Jan 1 00:00:51 1918 UTC = Mon Dec 31 23:59:59 1917 LMT
isdst=0
Africa/Accra Tue Jan 1 00:00:52 1918 UTC = Tue Jan 1 00:00:52 1918 GMT
isdst=0
Africa/Accra Mon Aug 31 23:59:59 1936 UTC = Mon Aug 31 23:59:59 1936 GMT
isdst=0
Africa/Accra Tue Sep 1 00:00:00 1936 UTC = Tue Sep 1 00:20:00 1936 GHST
isdst=1
Africa/Accra Wed Dec 30 23:39:59 1936 UTC = Wed Dec 30 23:59:59 1936 GHST
isdst=1
Africa/Accra Wed Dec 30 23:40:00 1936 UTC = Wed Dec 30 23:40:00 1936 GMT
isdst=0
Africa/Accra Tue Aug 31 23:59:59 1937 UTC = Tue Aug 31 23:59:59 1937 GMT
isdst=0
Africa/Accra Wed Sep 1 00:00:00 1937 UTC = Wed Sep 1 00:20:00 1937 GHST
isdst=1
Africa/Accra Thu Dec 30 23:39:59 1937 UTC = Thu Dec 30 23:59:59 1937 GHST
isdst=1
Africa/Accra Thu Dec 30 23:40:00 1937 UTC = Thu Dec 30 23:40:00 1937 GMT
isdst=0
Africa/Accra Wed Aug 31 23:59:59 1938 UTC = Wed Aug 31 23:59:59 1938 GMT
isdst=0
Africa/Accra Thu Sep 1 00:00:00 1938 UTC = Thu Sep 1 00:20:00 1938 GHST
isdst=1
Africa/Accra Fri Dec 30 23:39:59 1938 UTC = Fri Dec 30 23:59:59 1938 GHST
isdst=1
Africa/Accra Fri Dec 30 23:40:00 1938 UTC = Fri Dec 30 23:40:00 1938 GMT
isdst=0
Africa/Accra Thu Aug 31 23:59:59 1939 UTC = Thu Aug 31 23:59:59 1939 GMT
isdst=0
Africa/Accra Fri Sep 1 00:00:00 1939 UTC = Fri Sep 1 00:20:00 1939 GHST
isdst=1
Africa/Accra Sat Dec 30 23:39:59 1939 UTC = Sat Dec 30 23:59:59 1939 GHST
isdst=1
Africa/Accra Sat Dec 30 23:40:00 1939 UTC = Sat Dec 30 23:40:00 1939 GMT
isdst=0
Africa/Accra Sat Aug 31 23:59:59 1940 UTC = Sat Aug 31 23:59:59 1940 GMT
isdst=0
Africa/Accra Sun Sep 1 00:00:00 1940 UTC = Sun Sep 1 00:20:00 1940 GHST
isdst=1
Africa/Accra Mon Dec 30 23:39:59 1940 UTC = Mon Dec 30 23:59:59 1940 GHST
isdst=1
Africa/Accra Mon Dec 30 23:40:00 1940 UTC = Mon Dec 30 23:40:00 1940 GMT
isdst=0
Africa/Accra Sun Aug 31 23:59:59 1941 UTC = Sun Aug 31 23:59:59 1941 GMT
isdst=0
Africa/Accra Mon Sep 1 00:00:00 1941 UTC = Mon Sep 1 00:20:00 1941 GHST
isdst=1
Africa/Accra Tue Dec 30 23:39:59 1941 UTC = Tue Dec 30 23:59:59 1941 GHST
isdst=1
Africa/Accra Tue Dec 30 23:40:00 1941 UTC = Tue Dec 30 23:40:00 1941 GMT
isdst=0
Africa/Accra Mon Aug 31 23:59:59 1942 UTC = Mon Aug 31 23:59:59 1942 GMT
isdst=0
Africa/Accra Tue Sep 1 00:00:00 1942 UTC = Tue Sep 1 00:20:00 1942 GHST
isdst=1
Africa/Accra Wed Dec 30 23:39:59 1942 UTC = Wed Dec 30 23:59:59 1942 GHST
isdst=1
Africa/Accra Wed Dec 30 23:40:00 1942 UTC = Wed Dec 30 23:40:00 1942 GMT
isdst=0
Africa/Accra Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 03:14:07 2038 GMT
isdst=0
Africa/Accra Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 03:14:07 2038 GMT
isdst=0
Africa/Tunis Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 20:55:13 1901 PMT
isdst=0
Africa/Tunis Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 20:55:13 1901 PMT
isdst=0
Africa/Tunis Fri Mar 10 23:50:38 1911 UTC = Fri Mar 10 23:59:59 1911 PMT
isdst=0
Africa/Tunis Fri Mar 10 23:50:39 1911 UTC = Sat Mar 11 00:50:39 1911 CET
isdst=0
Africa/Tunis Sat Apr 15 21:59:59 1939 UTC = Sat Apr 15 22:59:59 1939 CET
isdst=0
Africa/Tunis Sat Apr 15 22:00:00 1939 UTC = Sun Apr 16 00:00:00 1939 CEST
isdst=1
Africa/Tunis Sat Nov 18 21:59:59 1939 UTC = Sat Nov 18 23:59:59 1939 CEST
isdst=1
Africa/Tunis Sat Nov 18 22:00:00 1939 UTC = Sat Nov 18 23:00:00 1939 CET
isdst=0
Africa/Tunis Sun Feb 25 21:59:59 1940 UTC = Sun Feb 25 22:59:59 1940 CET
isdst=0
Africa/Tunis Sun Feb 25 22:00:00 1940 UTC = Mon Feb 26 00:00:00 1940 CEST
isdst=1
Africa/Tunis Sun Oct 5 21:59:59 1941 UTC = Sun Oct 5 23:59:59 1941 CEST
isdst=1
Africa/Tunis Sun Oct 5 22:00:00 1941 UTC = Sun Oct 5 23:00:00 1941 CET
isdst=0
Africa/Tunis Sun Mar 8 22:59:59 1942 UTC = Sun Mar 8 23:59:59 1942 CET
isdst=0
Africa/Tunis Sun Mar 8 23:00:00 1942 UTC = Mon Mar 9 01:00:00 1942 CEST
isdst=1
Africa/Tunis Mon Nov 2 00:59:59 1942 UTC = Mon Nov 2 02:59:59 1942 CEST
isdst=1
Africa/Tunis Mon Nov 2 01:00:00 1942 UTC = Mon Nov 2 02:00:00 1942 CET
isdst=0
Africa/Tunis Mon Mar 29 00:59:59 1943 UTC = Mon Mar 29 01:59:59 1943 CET
isdst=0
Africa/Tunis Mon Mar 29 01:00:00 1943 UTC = Mon Mar 29 03:00:00 1943 CEST
isdst=1
Africa/Tunis Fri Apr 16 23:59:59 1943 UTC = Sat Apr 17 01:59:59 1943 CEST
isdst=1
Africa/Tunis Sat Apr 17 00:00:00 1943 UTC = Sat Apr 17 01:00:00 1943 CET
isdst=0
Africa/Tunis Sun Apr 25 00:59:59 1943 UTC = Sun Apr 25 01:59:59 1943 CET
isdst=0
Africa/Tunis Sun Apr 25 01:00:00 1943 UTC = Sun Apr 25 03:00:00 1943 CEST
isdst=1
Africa/Tunis Sun Oct 3 23:59:59 1943 UTC = Mon Oct 4 01:59:59 1943 CEST
isdst=1
Africa/Tunis Mon Oct 4 00:00:00 1943 UTC = Mon Oct 4 01:00:00 1943 CET
isdst=0
Africa/Tunis Mon Apr 3 00:59:59 1944 UTC = Mon Apr 3 01:59:59 1944 CET
isdst=0
Africa/Tunis Mon Apr 3 01:00:00 1944 UTC = Mon Apr 3 03:00:00 1944 CEST
isdst=1
Africa/Tunis Sat Oct 7 21:59:59 1944 UTC = Sat Oct 7 23:59:59 1944 CEST
isdst=1
Africa/Tunis Sat Oct 7 22:00:00 1944 UTC = Sat Oct 7 23:00:00 1944 CET
isdst=0
Africa/Tunis Mon Apr 2 00:59:59 1945 UTC = Mon Apr 2 01:59:59 1945 CET
isdst=0
Africa/Tunis Mon Apr 2 01:00:00 1945 UTC = Mon Apr 2 03:00:00 1945 CEST
isdst=1
Africa/Tunis Sat Sep 15 21:59:59 1945 UTC = Sat Sep 15 23:59:59 1945 CEST
isdst=1
Africa/Tunis Sat Sep 15 22:00:00 1945 UTC = Sat Sep 15 23:00:00 1945 CET
isdst=0
Africa/Tunis Fri Apr 29 22:59:59 1977 UTC = Fri Apr 29 23:59:59 1977 CET
isdst=0
Africa/Tunis Fri Apr 29 23:00:00 1977 UTC = Sat Apr 30 01:00:00 1977 CEST
isdst=1
Africa/Tunis Fri Sep 23 22:59:59 1977 UTC = Sat Sep 24 00:59:59 1977 CEST
isdst=1
Africa/Tunis Fri Sep 23 23:00:00 1977 UTC = Sat Sep 24 00:00:00 1977 CET
isdst=0
Africa/Tunis Sun Apr 30 22:59:59 1978 UTC = Sun Apr 30 23:59:59 1978 CET
isdst=0
Africa/Tunis Sun Apr 30 23:00:00 1978 UTC = Mon May 1 01:00:00 1978 CEST
isdst=1
Africa/Tunis Sat Sep 30 22:59:59 1978 UTC = Sun Oct 1 00:59:59 1978 CEST
isdst=1
Africa/Tunis Sat Sep 30 23:00:00 1978 UTC = Sun Oct 1 00:00:00 1978 CET
isdst=0
Africa/Tunis Tue May 31 22:59:59 1988 UTC = Tue May 31 23:59:59 1988 CET
isdst=0
Africa/Tunis Tue May 31 23:00:00 1988 UTC = Wed Jun 1 01:00:00 1988 CEST
isdst=1
Africa/Tunis Sat Sep 24 22:59:59 1988 UTC = Sun Sep 25 00:59:59 1988 CEST
isdst=1
Africa/Tunis Sat Sep 24 23:00:00 1988 UTC = Sun Sep 25 00:00:00 1988 CET
isdst=0
Africa/Tunis Sat Mar 25 22:59:59 1989 UTC = Sat Mar 25 23:59:59 1989 CET
isdst=0
Africa/Tunis Sat Mar 25 23:00:00 1989 UTC = Sun Mar 26 01:00:00 1989 CEST
isdst=1
Africa/Tunis Sat Sep 23 22:59:59 1989 UTC = Sun Sep 24 00:59:59 1989 CEST
isdst=1
Africa/Tunis Sat Sep 23 23:00:00 1989 UTC = Sun Sep 24 00:00:00 1989 CET
isdst=0
Africa/Tunis Mon Apr 30 22:59:59 1990 UTC = Mon Apr 30 23:59:59 1990 CET
isdst=0
Africa/Tunis Mon Apr 30 23:00:00 1990 UTC = Tue May 1 01:00:00 1990 CEST
isdst=1
Africa/Tunis Sat Sep 29 22:59:59 1990 UTC = Sun Sep 30 00:59:59 1990 CEST
isdst=1
Africa/Tunis Sat Sep 29 23:00:00 1990 UTC = Sun Sep 30 00:00:00 1990 CET
isdst=0
Africa/Tunis Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 04:14:07 2038 CET
isdst=0
Africa/Tunis Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 04:14:07 2038 CET
isdst=0
flower$ exit
script done on Thu Dec 14 16:07:23 2000
More information about the tz
mailing list