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