[tz] Java & Rearguard
Guy Harris
guy at alum.mit.edu
Thu Jun 6 19:01:01 UTC 2019
On Jun 5, 2019, at 7:33 PM, Steve Summit <scs at eskimo.com> wrote:
> (As an aside: Is it my imagination, or was there a time when C
> had an array of 1, 2, or maybe more than 2 time zone strings,
> and you used tm_isdst as an index into them, such that tm_isdst
> functioned as a sort of an opaque token even though it had "dst"
> in its name?)
OK, time for another source dive!
V7:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/libc/gen/timezone.c
had a timezone() function, which took an offset-in-minutes-from-UTC-with-west-of-UTC-being-positive argument and a "is this DST" argument, and looked up the zone in a table of North American time zone abbreviation names and returned either the result or, if it wasn't found, a string of the form "GMT{+,-}H:MM, with + being east of UTC and - being west of UTC.
4.2BSD:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.2BSD/usr/src/lib/libc/gen/timezone.c
offered the same API, added some European and Australian time zones to the table, and allowed a TZNAME environment variable, of the form "std,dst", to be used to set the zone name.
Dating back at least as far as System III:
https://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/lib/libc/pdp11/gen/ctime.c
the System Roman Numeral list of UNIXes had the tzname[] array, with 2 elements, the first of which was for "standard" time and the second of which was for "daylight saving" time. The System III man page for ctime():
https://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man3/ctime.3c
doesn't explicitly say that you use tm_isdst as an index into tzname[], or that the first element is for "standard" time and the second is for "daylight saving" time, but
char *tzname[2] = {"EST", "EDT"};
somewhat suggests the latter.
The System Roman Numeral mechanism for getting the time zone name is what POSIX adopted.
More information about the tz
mailing list