
Speaking of "the original ... work", how did this all get started,
anyway?
The ultimate impetus was the legislation that changed the start of U. S. Daylight Saving Time from the last Sunday in April to the first Sunday in April. The proximate impetus was a mod.std.unix discussion on the subject. I've attached some of the early electronic mail. By 1/11/86 the format looked much as it does today. The "hard part" not dealt with in the 1/13/86 "distribution" was the text-format-to-binary-format converter (today's zic). --ado
From ado Mon Jan 6 10:28:48 1986
To: cbosgd!mark
Subject: Daylight Savings Time
Cc: seismo!philabs!linus!encore!necis!geo
Status: O
Well, I'll admit that my first reaction to the idea of something on the order
of "/etc/dstcap" was a smiley face. But over the weekend I thought about the
matter some more. The result of the thinking was a sheet of paper with this
on it:
eastern:\
:st=EST:\
:dt=EDT:\
:os=-21000:\
...
Now regardless of the way the above information is encoded, the questions are:
Is there enough information present above to deal with the various
Daylight Saving Time schemes that currently exist? Would the information be
enough to deal with anything that US (or foreign) legislators are likely
to dream up? Or does one *really* need to have something on the order of
"/etc/dstinfo" (with a stack and arithmetic and such)?
--ado
From cbosgd!cbpavo.cbosgd.ATT.UUCP!mark Fri Jan 10 16:19:08 1986 remote from seismo
Received: from cbosgd.UUCP by seismo.CSS.GOV with UUCP; Fri, 10 Jan 86 16:05:29 EST
Received: from cbpavo.cbosgd.ATT.UUCP (cbpavo.ARPA)
by cbosgd.ATT.UUCP (4.12/UUCP-Project/11.09.85)
id AA17523; Fri, 10 Jan 86 15:04:29 est
Received: by cbpavo.cbosgd.ATT.UUCP (4.24/3.14)
id AA03218; Fri, 10 Jan 86 15:04:20 est
Date: Fri, 10 Jan 86 15:04:20 est
From: seismo!cbpavo.cbosgd.ATT.UUCP!mark (Mark Horton)
Message-Id: <8601102004.AA03218@cbpavo.cbosgd.ATT.UUCP>
To: elsie!ado, harvard!encore!encore!necis!geo
Subject: Re: Daylight Savings Time
While I like your semantics, the format is horrible. I'd much
prefer to see each year (or year range) in one place rather
than have it scattered over 14 different days of the week.
The format has to be something the average non-guru can understand.
Termcap is a bit much for such people. Something easy like
Year Key Parm Time GMT offset
1970 3-sun 4 0200 -0400
1970 3-sun 10 0200 -0500
1971 3-sun 4 0200 -0400
1971 3-sun 10 0200 -0500
1972 3-sun 4 0200 -0400
1972 3-sun 10 0200 -0500
1973 3-sun 4 0200 -0400
1973 3-sun 10 0200 -0500
1974 julian 120 0200 -0400
1974 julian 306 0200 -0500
1975 julian 0 0200 -0400
1975 julian 366 0200 -0500
1976 3-sun 4 0200 -0400
1976 3-sun 10 0200 -0500
This could probably be translated into a handy binary format for ctime
to use quickly. The parm is either the month number (for things like
"3rd Sunday") or the Julian date on which to make the change. The
above numbers are probably all wrong but you get the idea. You could
have any number of changes in a year, although 2 would be common.
Mark
From ado Sat Jan 11 12:42:16 1986
To: cbosgd!mark
Subject: DST
Status: O
An alternate approach to allow for multiple time zones. Make the rules look
like:
Rule Year(s) Month Day Time ST offset String
MostUS -1973 Apr last-Sun 2:00 1:00 D
MostUS -1973 Oct last-Sun 2:00 0 S
MostUS 1974 Jan last-Sun 2:00 1:00 D
MostUS 1974 Nov last-Sun 2:00 0 S
MostUS 1975 Feb last-Sun 2:00 1:00 D
MostUS 1975 Oct last-Sun 2:00 0 S
MostUS 1976- Apr last-Sun 2:00 1:00 D
MostUS 1976- Oct last-Sun 2:00 0 S
Patron 1969- Apr last-Sun 2:00 1:00 D
Patron 1969- Jul last-Sun 2:00 2:00 DD
Patron 1969- Aug last-Sun 2:00 1:00 D
Patron 1969- Oct last-Sun 2:00 0 S
and the Time Zone information look like
Name GMT offset Rule Abbreviation
Eastern -5:00 MostUS E%sT
Central -6:00 MostUS C%sT
Pacific -8:00 MostUS P%sT
Alaskan ? MostUS A%sT
Hawaiian ? MostUS H%sT
Patronian ? Patron P%sT
--ado
From ado Mon Jan 13 21:04:01 1986
To: cbosgd!mark
Subject: The easy part of ctime()
Status: O
The next letter from me should be a shell archive containing five files:
Makefile
timezone.h
ctime.c
try.c
fake.c
The important files are "timezone.h" which gives the format of "binary time
zone information files," and "ctime.c" which makes use of the files. . .
==============================================================
participants (1)
-
Arthur David Olson