Import the rest of tzcode2004a, the bits needed for the timezone compiler.

Obtained from:	ftp://elsie.nci.nih.gov/pub/tzcode2004a.tar.gz
This commit is contained in:
Stefan Farfeleder 2004-06-20 11:52:51 +00:00
parent dcd1bc204f
commit 08ebef69b6
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/vendor/tzcode/dist/; revision=130777
9 changed files with 1162 additions and 92 deletions

View File

@ -1,4 +1,4 @@
@(#)README 7.10
@(#)README 7.11
"What time is it?" -- Richard Deacon as The King
"Any time you want it to be." -- Frank Baxter as The Scientist
@ -33,8 +33,22 @@ Since POSIX frowns on correct leap second handling, the default behavior of
the "zic" command (in the absence of a "-L" option) has been changed to omit
leap second information from its output files.
Be sure to read the comments in "Makefile" and make any changes
needed to make things right for your system.
Here is a recipe for acquiring, building, installing, and testing the
tz distribution on a GNU/Linux or similar host.
mkdir tz
cd tz
wget 'ftp://elsie.nci.nih.gov/pub/tz*.tar.gz'
gzip -dc tzcode*.tar.gz | tar -xf -
gzip -dc tzdata*.tar.gz | tar -xf -
Be sure to read the comments in "Makefile" and make any changes needed
to make things right for your system, especially if you are using some
platform other than GNU/Linux. Then run the following commands,
substituting your desired installation directory for "$HOME/tzdir":
make TOPDIR=$HOME/tzdir install
$HOME/tzdir/etc/zdump -v America/Los_Angeles
To use the new functions, use a "-ltz" option when compiling or linking.

View File

@ -1,4 +1,4 @@
@(#)Theory 7.6
@(#)Theory 7.15
----- Outline -----
@ -6,12 +6,14 @@
Time and date functions
Names of time zone regions
Time zone abbreviations
Calendrical issues
Time and time zones on Mars
----- Time and date functions -----
These time and date functions are upwards compatible with POSIX.1,
an international standard for Unix-like systems.
an international standard for UNIX-like systems.
As of this writing, the current edition of POSIX.1 is:
Information technology --Portable Operating System Interface (POSIX (R))
@ -34,7 +36,7 @@ POSIX.1 has the following properties and limitations.
stdoffset[dst[offset],date[/time],date[/time]]
where:
std and dst
are 3 or more characters specifying the standard
and daylight saving time (DST) zone names.
@ -143,7 +145,7 @@ Points of interest to folks with other systems:
since the format of zic's input changed slightly in late 1994,
and many vendors still do not support the new input format.
* The Unix Version 7 "timezone" function is not present in this package;
* The UNIX Version 7 "timezone" function is not present in this package;
it's impossible to reliably map timezone's arguments (a "minutes west
of GMT" value and a "daylight saving time in effect" flag) to a
time zone abbreviation, and we refuse to guess.
@ -178,11 +180,34 @@ so much the better.
----- Names of time zone rule files -----
The names of this package's installed time zone rule files are chosen to
help minimize possible future incompatibilities due to political events.
Ordinarily, names of countries are not used, to avoid incompatibilities
when countries change their name (e.g. Zaire->Congo) or
when locations change countries (e.g. Hong Kong from UK colony to China).
The time zone rule file naming conventions attempt to strike a balance
among the following goals:
* Uniquely identify every national region where clocks have all
agreed since 1970. This is essential for the intended use: static
clocks keeping local civil time.
* Indicate to humans as to where that region is. This simplifes use.
* Be robust in the presence of political changes. This reduces the
number of updates and backward-compatibility hacks. For example,
names of countries are ordinarily not used, to avoid
incompatibilities when countries change their name
(e.g. Zaire->Congo) or when locations change countries
(e.g. Hong Kong from UK colony to China).
* Be portable to a wide variety of implementations.
This promotes use of the technology.
* Use a consistent naming convention over the entire world.
This simplifies both use and maintenance.
This naming convention is not intended for use by inexperienced users
to select TZ values by themselves (though they can of course examine
and reuse existing settings). Distributors should provide
documentation and/or a simple selection interface that explains the
names; see the 'tzselect' program supplied with this distribution for
one example.
Names normally have the form AREA/LOCATION, where AREA is the name
of a continent or ocean, and LOCATION is the name of a specific
@ -193,11 +218,16 @@ and `Pacific/Honolulu'.
Here are the general rules used for choosing location names,
in decreasing order of importance:
Use only valid Posix file names. Use only Ascii letters, digits, `.',
`-' and `_'. Do not exceed 14 characters or start with `-'.
E.g. prefer `Brunei' to `Bandar_Seri_Begawan'.
Use only valid POSIX file name components (i.e., the parts of
names other than `/'). Within a file name component,
use only ASCII letters, `.', `-' and `_'. Do not use
digits, as that might create an ambiguity with POSIX
TZ strings. A file name component must not exceed 14
characters or start with `-'. E.g., prefer `Brunei'
to `Bandar_Seri_Begawan'.
Include at least one location per time zone rule set per country.
One such location is enough.
One such location is enough. Use ISO 3166 (see the file
iso3166.tab) to help decide whether something is a country.
If all the clocks in a country's region have agreed since 1970,
don't bother to include more than one location
even if subregions' clocks disagreed before 1970.
@ -209,9 +239,9 @@ in decreasing order of importance:
or regions, so that any future time zone changes do not split
locations into different time zones. E.g. prefer `Paris'
to `France', since France has had multiple time zones.
Use traditional English spelling, e.g. prefer `Rome' to `Roma', and
Use mainstream English spelling, e.g. prefer `Rome' to `Roma', and
prefer `Athens' to the true name (which uses Greek letters).
The Posix file name restrictions encourage this rule.
The POSIX file name restrictions encourage this rule.
Use the most populous among locations in a country's time zone,
e.g. prefer `Shanghai' to `Beijing'. Among locations with
similar populations, pick the best-known location,
@ -225,13 +255,19 @@ in decreasing order of importance:
Use `_' to represent a space.
Omit `.' from abbreviations in names, e.g. prefer `St_Helena'
to `St._Helena'.
Do not change established names if they only marginally
violate the above rules. For example, don't change
the existing name `Rome' to `Milan' merely because
Milan's population has grown to be somewhat greater
than Rome's.
If a name is changed, put its old spelling in the `backward' file.
The file `zone.tab' lists the geographical locations used to name
time zone rule files.
Older versions of this package used a different naming scheme,
and these older names are still supported.
See the file `backwards' for most of these older names
See the file `backward' for most of these older names
(e.g. `US/Eastern' instead of `America/New_York').
The other old-fashioned names still supported are
`WET', `CET', `MET', `EET' (see the file `europe'),
@ -245,25 +281,39 @@ like `EST' to be compatible with human tradition and POSIX.1.
Here are the general rules used for choosing time zone abbreviations,
in decreasing order of importance:
Use abbreviations that consist of 3 or more upper-case Ascii letters,
except use "___" for locations while uninhabited.
Posix.1 requires at least 3 characters, and the restriction to
upper-case Ascii letters follows most traditions.
Use abbreviations that consist of three or more ASCII letters.
Previous editions of this database also used characters like
' ' and '?', but these characters have a special meaning to
the shell and cause commands like
set `date`
to have unexpected effects. In theory, the character set could
be !%./@A-Z^_a-z{}, but these tables use only upper-case
Ascii letters (and "___").
to have unexpected effects.
Previous editions of this rule required upper-case letters,
but the Congressman who introduced Chamorro Standard Time
preferred "ChST", so the rule has been relaxed.
This rule guarantees that all abbreviations could have
been specified by a POSIX.1 TZ string. POSIX.1
requires at least three characters for an
abbreviation. POSIX.1-1996 says that an abbreviation
cannot start with ':', and cannot contain ',', '-',
'+', NUL, or a digit. Draft 7 of POSIX 1003.1-200x
changes this rule to say that an abbreviation can
contain only '-', '+', and alphanumeric characters in
the current locale. To be portable to both sets of
rules, an abbreviation must therefore use only ASCII
letters, as these are the only letters that are
alphabetic in all locales.
Use abbreviations that are in common use among English-speakers,
e.g. `EST' for Eastern Standard Time in North America.
We assume that applications translate them to other languages
as part of the normal localization process; for example,
a French application might translate `EST' to `HNE'.
For zones whose times are taken from a city's longitude, use the
traditional xMT notation, e.g. `PMT' for Paris Mean Time.
The only name like this in current use is `GMT'.
If there is no common English abbreviation, abbreviate the English
translation of the usual phrase used by native speakers.
If this is not available or is a phrase mentioning the country
@ -278,8 +328,225 @@ in decreasing order of importance:
and then append `T', `ST', etc. as before;
e.g. `VLAST' for VLAdivostok Summer Time.
Use "zzz" for locations while uninhabited. The mnemonic is that
these locations are, in some sense, asleep.
Application writers should note that these abbreviations are ambiguous
in practice: e.g. `EST' has a different meaning in Australia than
it does in the United States. In new applications, it's often better
to use numeric UTC offsets like `-0500' instead of time zone
abbreviations like `EST'; this avoids the ambiguity.
----- Calendrical issues -----
Calendrical issues are a bit out of scope for a time zone database,
but they indicate the sort of problems that we would run into if we
extended the time zone database further into the past. An excellent
resource in this area is Nachum Dershowitz and Edward M. Reingold,
<a href="http://emr.cs.uiuc.edu/home/reingold/calendar-book/index.shtml">
Calendrical Calculations
</a>, Cambridge University Press (1997). Other information and
sources are given below. They sometimes disagree.
France
Gregorian calendar adopted 1582-12-20.
French Revolutionary calendar used 1793-11-24 through 1805-12-31,
and (in Paris only) 1871-05-06 through 1871-05-23.
Russia
From Chris Carrier <72157.3334@CompuServe.COM> (1996-12-02):
On 1929-10-01 the Soviet Union instituted an ``Eternal Calendar''
with 30-day months plus 5 holidays, with a 5-day week.
On 1931-12-01 it changed to a 6-day week; in 1934 it reverted to the
Gregorian calendar while retaining the 6-day week; on 1940-06-27 it
reverted to the 7-day week. With the 6-day week the usual days
off were the 6th, 12th, 18th, 24th and 30th of the month.
(Source: Evitiar Zerubavel, _The Seven Day Circle_)
Mark Brader reported a similar story in "The Book of Calendars", edited
by Frank Parise (1982, Facts on File, ISBN 0-8719-6467-8), page 377. But:
From: Petteri Sulonen (via Usenet)
Date: 14 Jan 1999 00:00:00 GMT
Message-ID: <Petteri.Sulonen-1401991626030001@lapin-kulta.in.helsinki.fi>
If your source is correct, how come documents between 1929 -- 1940 were
still dated using the conventional, Gregorian calendar?
I can post a scan of a document dated December 1, 1934, signed by
Yenukidze, the secretary, on behalf of Kalinin, the President of the
Executive Committee of the Supreme Soviet, if you like.
Sweden (and Finland)
From: msb@sq.com (Mark Brader)
<a href="news:1996Jul6.012937.29190@sq.com">
Subject: Re: Gregorian reform -- a part of locale?
</a>
Date: 1996-07-06
In 1700, Denmark made the transition from Julian to Gregorian. Sweden
decided to *start* a transition in 1700 as well, but rather than have one of
those unsightly calendar gaps :-), they simply decreed that the next leap
year after 1696 would be in 1744 -- putting the whole country on a calendar
different from both Julian and Gregorian for a period of 40 years.
However, in 1704 something went wrong and the plan was not carried through;
they did, after all, have a leap year that year. And one in 1708. In 1712
they gave it up and went back to Julian, putting 30 days in February that
year!...
Then in 1753, Sweden made the transition to Gregorian in the usual manner,
getting there only 13 years behind the original schedule.
(A previous posting of this story was challenged, and Swedish readers
produced the following references to support it: "Tiderakning och historia"
by Natanael Beckman (1924) and "Tid, en bok om tiderakning och
kalendervasen" by Lars-Olof Lode'n (no date was given).)
Grotefend's data
From: "Michael Palmer" <mpalmer@netcom.com> [with one obvious typo fixed]
Subject: Re: Gregorian Calendar (was Re: Another FHC related question
Newsgroups: soc.genealogy.german
Date: Tue, 9 Feb 1999 02:32:48 -800
Message-ID: <199902091032.CAA09644@netcom10.netcom.com>
The following is a(n incomplete) listing, arranged chronologically, of
European states, with the date they converted from the Julian to the
Gregorian calendar:
04/15 Oct 1582 - Italy (with exceptions), Spain, Portugal, Poland (Roman
Catholics and Danzig only)
09/20 Dec 1582 - France, Lorraine
21 Dec 1582/
01 Jan 1583 - Holland, Brabant, Flanders, Hennegau
10/21 Feb 1583 - bishopric of Liege (L"uttich)
13/24 Feb 1583 - bishopric of Augsburg
04/15 Oct 1583 - electorate of Trier
05/16 Oct 1583 - Bavaria, bishoprics of Freising, Eichstedt, Regensburg,
Salzburg, Brixen
13/24 Oct 1583 - Austrian Oberelsass and Breisgau
20/31 Oct 1583 - bishopric of Basel
02/13 Nov 1583 - duchy of J"ulich-Berg
02/13 Nov 1583 - electorate and city of K"oln
04/15 Nov 1583 - bishopric of W"urzburg
11/22 Nov 1583 - electorate of Mainz
16/27 Nov 1583 - bishopric of Strassburg and the margraviate of Baden
17/28 Nov 1583 - bishopric of M"unster and duchy of Cleve
14/25 Dec 1583 - Steiermark
06/17 Jan 1584 - Austria and Bohemia
11/22 Jan 1584 - Luzern, Uri, Schwyz, Zug, Freiburg, Solothurn
12/23 Jan 1584 - Silesia and the Lausitz
22 Jan/
02 Feb 1584 - Hungary (legally on 21 Oct 1587)
Jun 1584 - Unterwalden
01/12 Jul 1584 - duchy of Westfalen
16/27 Jun 1585 - bishopric of Paderborn
14/25 Dec 1590 - Transylvania
22 Aug/
02 Sep 1612 - duchy of Prussia
13/24 Dec 1614 - Pfalz-Neuburg
1617 - duchy of Kurland (reverted to the Julian calendar in
1796)
1624 - bishopric of Osnabr"uck
1630 - bishopric of Minden
15/26 Mar 1631 - bishopric of Hildesheim
1655 - Kanton Wallis
05/16 Feb 1682 - city of Strassburg
18 Feb/
01 Mar 1700 - Protestant Germany (including Swedish possessions in
Germany), Denmark, Norway
30 Jun/
12 Jul 1700 - Gelderland, Zutphen
10 Nov/
12 Dec 1700 - Utrecht, Overijssel
31 Dec 1700/
12 Jan 1701 - Friesland, Groningen, Z"urich, Bern, Basel, Geneva,
Turgau, and Schaffhausen
1724 - Glarus, Appenzell, and the city of St. Gallen
01 Jan 1750 - Pisa and Florence
02/14 Sep 1752 - Great Britain
17 Feb/
01 Mar 1753 - Sweden
1760-1812 - Graub"unden
The Russian empire (including Finland and the Baltic states) did not
convert to the Gregorian calendar until the Soviet revolution of 1917.
Source: H. Grotefend, _Taschenbuch der Zeitrechnung des deutschen
Mittelalters und der Neuzeit_, herausgegeben von Dr. O. Grotefend
(Hannover: Hahnsche Buchhandlung, 1941), pp. 26-28.
----- Time and time zones on Mars -----
Some people have adjusted their work schedules to fit Mars time.
Dozens of special Mars watches were built for Jet Propulsion
Laboratory workers who kept Mars time during the Mars Exploration
Rovers mission (2004). These timepieces look like normal Seikos and
Citizens but use Mars seconds rather than terrestrial seconds.
A Mars solar day is called a "sol" and has a mean period equal to
about 24 hours 39 minutes 35.244 seconds in terrestrial time. It is
divided into a conventional 24-hour clock, so each Mars second equals
about 1.02749125 terrestrial seconds.
The prime meridian of Mars goes through the center of the crater
Airy-0, named in honor of the British astronomer who built the
Greenwich telescope that defines Earth's prime meridian. Mean solar
time on the Mars prime meridian is called Mars Coordinated Time (MTC).
Each landed mission on Mars has adopted a different reference for
solar time keeping, so there is no real standard for Mars time zones.
For example, the Mars Exploration Rover project (2004) defined two
time zones "Local Solar Time A" and "Local Solar Time B" for its two
missions, each zone designed so that its time equals local true solar
time at approximately the middle of the nominal mission. Such a "time
zone" is not particularly suited for any application other than the
mission itself.
Many calendars have been proposed for Mars, but none have achieved
wide acceptance. Astronomers often use Mars Sol Date (MSD) which is a
sequential count of Mars solar days elapsed since about 1873-12-29
12:00 GMT.
The tz database does not currently support Mars time, but it is
documented here in the hopes that support will be added eventually.
Sources:
Michael Allison and Robert Schmunk,
"Technical Notes on Mars Solar Time as Adopted by the Mars24 Sunclock"
<http://www.giss.nasa.gov/tools/mars24/help/notes.html> (2004-03-15).
Jia-Rui Chong, "Workdays Fit for a Martian", Los Angeles Times
(2004-01-14), pp A1, A20-A21.

View File

@ -21,7 +21,7 @@
#ifndef lint
#ifndef NOID
static char privatehid[] = "@(#)private.h 7.48";
static char privatehid[] = "@(#)private.h 7.53";
#endif /* !defined NOID */
#endif /* !defined lint */
@ -38,18 +38,30 @@ static char privatehid[] = "@(#)private.h 7.48";
#define HAVE_GETTEXT 0
#endif /* !defined HAVE_GETTEXT */
#ifndef HAVE_INCOMPATIBLE_CTIME_R
#define HAVE_INCOMPATIBLE_CTIME_R 0
#endif /* !defined INCOMPATIBLE_CTIME_R */
#ifndef HAVE_SETTIMEOFDAY
#define HAVE_SETTIMEOFDAY 3
#endif /* !defined HAVE_SETTIMEOFDAY */
#ifndef HAVE_STRERROR
#define HAVE_STRERROR 0
#define HAVE_STRERROR 1
#endif /* !defined HAVE_STRERROR */
#ifndef HAVE_SYMLINK
#define HAVE_SYMLINK 1
#endif /* !defined HAVE_SYMLINK */
#ifndef HAVE_SYS_STAT_H
#define HAVE_SYS_STAT_H 1
#endif /* !defined HAVE_SYS_STAT_H */
#ifndef HAVE_SYS_WAIT_H
#define HAVE_SYS_WAIT_H 1
#endif /* !defined HAVE_SYS_WAIT_H */
#ifndef HAVE_UNISTD_H
#define HAVE_UNISTD_H 1
#endif /* !defined HAVE_UNISTD_H */
@ -62,6 +74,11 @@ static char privatehid[] = "@(#)private.h 7.48";
#define LOCALE_HOME "/usr/lib/locale"
#endif /* !defined LOCALE_HOME */
#if HAVE_INCOMPATIBLE_CTIME_R
#define asctime_r _incompatible_asctime_r
#define ctime_r _incompatible_ctime_r
#endif /* HAVE_INCOMPATIBLE_CTIME_R */
/*
** Nested includes
*/
@ -78,6 +95,17 @@ static char privatehid[] = "@(#)private.h 7.48";
#include "libintl.h"
#endif /* HAVE_GETTEXT - 0 */
#if HAVE_SYS_WAIT_H - 0
#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */
#endif /* HAVE_SYS_WAIT_H - 0 */
#ifndef WIFEXITED
#define WIFEXITED(status) (((status) & 0xff) == 0)
#endif /* !defined WIFEXITED */
#ifndef WEXITSTATUS
#define WEXITSTATUS(status) (((status) >> 8) & 0xff)
#endif /* !defined WEXITSTATUS */
#if HAVE_UNISTD_H - 0
#include "unistd.h" /* for F_OK and R_OK */
#endif /* HAVE_UNISTD_H - 0 */
@ -98,16 +126,6 @@ static char privatehid[] = "@(#)private.h 7.48";
** Workarounds for compilers/systems.
*/
/*
** SunOS 4.1.1 cc lacks const.
*/
#ifndef const
#ifndef __STDC__
#define const
#endif /* !defined __STDC__ */
#endif /* !defined const */
/*
** SunOS 4.1.1 cc lacks prototypes.
*/
@ -262,8 +280,15 @@ char * scheck P((const char *string, const char *format));
#define TZ_DOMAIN "tz"
#endif /* !defined TZ_DOMAIN */
#if HAVE_INCOMPATIBLE_CTIME_R
#undef asctime_r
#undef ctime_r
char *asctime_r P((struct tm const *, char *));
char *ctime_r P((time_t const *, char *));
#endif /* HAVE_INCOMPATIBLE_CTIME_R */
/*
** UNIX was a registered trademark of UNIX System Laboratories in 1993.
** UNIX was a registered trademark of The Open Group in 2003.
*/
#endif /* !defined PRIVATE_H */

278
usr.sbin/zic/tz-art.htm Normal file
View File

@ -0,0 +1,278 @@
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content='text/html; charset="US-ASCII"' />
<title>Time and the Arts</title>
</head>
<body>
<h1>Time and the Arts</h1>
<address>
@(#)tz-art.htm 7.53
</address>
<p>
Please send corrections to this web page to the
<a href="mailto:tz@elsie.nci.nih.gov">time zone mailing list</a>.</p>
<p>
See also <a href="tz-link.htm">Sources for Time Zone and Daylight Saving Time Data</a>.</p>
<hr />
<p>
Data on recordings of "Save That Time," Russ Long, Serrob Publishing, BMI:</p>
<table>
<tr><td>Artist</td><td>Karrin Allyson</td></tr>
<tr><td>CD</td><td>I Didn't Know About You</td></tr>
<tr><td>Copyright Date</td><td>1993</td></tr>
<tr><td>Label</td><td>Concord Jazz, Inc.</td></tr>
<tr><td>ID</td><td>CCD-4543</td></tr>
<tr><td>Track Time</td><td>3:44</td></tr>
<tr><td>Personnel</td><td>Karrin Allyson, vocal;
Russ Long, piano;
Gerald Spaits, bass;
Todd Strait, drums</td></tr>
<tr><td>Notes</td><td>CD notes "additional lyric by Karrin Allyson;
arranged by Russ Long and Karrin Allyson"</td></tr>
<tr><td>ADO Rating</td><td>1 star</td></tr>
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=A1fdovw9ta92k">AMG Rating</a></td><td>4 stars</td></tr>
<tr><td>Penguin Rating</td><td>3.5 stars</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Artist</td><td>Kevin Mahogany</td></tr>
<tr><td>CD</td><td>Double Rainbow</td></tr>
<tr><td>Copyright Date</td><td>1993</td></tr>
<tr><td>Label</td><td>Enja Records</td></tr>
<tr><td>ID</td><td>ENJ-7097 2</td></tr>
<tr><td>Track Time</td><td>6:27</td></tr>
<tr><td>Personnel</td><td>Kevin Mahogany, vocal;
Kenny Barron, piano;
Ray Drummond, bass;
Ralph Moore, tenor saxophone;
Lewis Nash, drums</td></tr>
<tr><td>ADO Rating</td><td>1.5 stars</td></tr>
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=Akikbikzjbb19">AMG Rating</a></td><td>3 stars</td></tr>
<tr><td>Penguin Rating</td><td>3 stars</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Artist</td><td>Joe Williams</td></tr>
<tr><td>CD</td><td>Here's to Life</td></tr>
<tr><td>Copyright Date</td><td>1994</td></tr>
<tr><td>Label</td><td>Telarc International Corporation</td></tr>
<tr><td>ID</td><td>CD-83357</td></tr>
<tr><td>Track Time</td><td>3:58</td></tr>
<tr><td>Personnel</td><td>Joe Williams, vocal
The Robert Farnon [39 piece] Orchestra</td></tr>
<tr><td>Notes</td><td>This CD is also available as part of a 3-CD package from
Telarc, "Triple Play" (CD-83461)</td></tr>
<tr><td>ADO Rating</td><td>black dot</td></tr>
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=Amyyvad6kt8w1">AMG Rating</a></td><td>2 stars</td></tr>
<tr><td>Penguin Rating</td><td>3 stars</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Artist</td><td>Charles Fambrough</td></tr>
<tr><td>CD</td><td>Keeper of the Spirit</td></tr>
<tr><td>Copyright Date</td><td>1995</td></tr>
<tr><td>Label</td><td>AudioQuest Music</td></tr>
<tr><td>ID</td><td>AQ-CD1033</td></tr>
<tr><td>Track Time</td><td>7:07</td></tr>
<tr><td>Personnel</td><td>Charles Fambrough, bass;
Joel Levine, tenor recorder;
Edward Simon, piano;
Lenny White, drums;
Marion Simon, percussion</td></tr>
<tr><td>Notes</td><td>On-line information and samples available at
<a href="http://wwmusic.com/~music/audioq/rel/1033.html">http://wwmusic.com/~music/audioq/rel/1033.html</a></td></tr>
<tr><td>ADO Rating</td><td>2 stars</td></tr>
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=A5rkcikcjbb89">AMG Rating</a></td><td>unrated</td></tr>
<tr><td>Penguin Rating</td><td>3 stars</td></tr>
</table>
<hr />
<p>Also of note:</p>
<table>
<tr><td>Artist</td><td>Holly Cole Trio</td></tr>
<tr><td>CD</td><td>Blame It On My Youth</td></tr>
<tr><td>Copyright Date</td><td>1992</td></tr>
<tr><td>Label</td><td>Manhattan</td></tr>
<tr><td>ID</td><td>CDP 7 97349 2</td></tr>
<tr><td>Total Time</td><td>37:45</td></tr>
<tr><td>Personnel</td><td>Holly Cole, voice;
Aaron Davis, piano;
David Piltch, string bass</td></tr>
<tr><td>Notes</td><td>Lyrical reference to "Eastern Standard Time" in
Tom Waits' "Purple Avenue"</td></tr>
<tr><td>ADO Rating</td><td>2.5 stars</td></tr>
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=A3a9ds37ya3dg">AMG Rating</a></td><td>3 stars</td></tr>
<tr><td>Penguin Rating</td><td>unrated</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Artist</td><td>Milt Hinton</td></tr>
<tr><td>CD</td><td>Old Man Time</td></tr>
<tr><td>Copyright Date</td><td>1990</td></tr>
<tr><td>Label</td><td>Chiaroscuro</td></tr>
<tr><td>ID</td><td>CR(D) 310</td></tr>
<tr><td>Total Time</td><td>149:38 (two CDs)</td></tr>
<tr><td>Personnel</td><td>Milt Hinton, bass;
Doc Cheatham, Dizzy Gillespie, Clark Terry, trumpet;
Al Grey, trombone;
Eddie Barefield, Joe Camel (Flip Phillips), Buddy Tate,
clarinet and saxophone;
John Bunch, Red Richards, Norman Simmons, Derek Smith,
Ralph Sutton, piano;
Danny Barker, Al Casey, guitar;
Gus Johnson, Gerryck King, Bob Rosengarden, Jackie Williams,
drums;
Lionel Hampton, vibraphone;
Cab Calloway, Joe Williams, vocal;
Buck Clayton, arrangements</td></tr>
<tr><td>Notes</td><td>tunes include Old Man Time, Time After Time,
Sometimes I'm Happy,
A Hot Time in the Old Town Tonight,
Four or Five Times, Now's the Time,
Time on My Hands, This Time It's Us,
and Good Time Charlie
On-line samples available at
<a href="http://www.chiaroscurojazz.com/albuminfo.php4?albumid=49">http://www.chiaroscurojazz.com/albuminfo.php3?albumid=49</a></td></tr>
<tr><td>ADO Rating</td><td>3 stars</td></tr>
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=A1cbyxdab8ola">AMG Rating</a></td><td>4.5 stars</td></tr>
<tr><td>Penguin Rating</td><td>3 stars</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Artist</td><td>Alan Broadbent</td></tr>
<tr><td>CD</td><td>Pacific Standard Time</td></tr>
<tr><td>Copyright Date</td><td>1995</td></tr>
<tr><td>Label</td><td>Concord Jazz, Inc.</td></tr>
<tr><td>ID</td><td>CCD-4664</td></tr>
<tr><td>Total Time</td><td>62:42</td></tr>
<tr><td>Personnel</td><td>Alan Broadbent, piano;
Putter Smith, Bass;
Frank Gibson, Jr., drums</td></tr>
<tr><td>Notes</td><td>The CD cover features an analemma for equation-of-time fans</td></tr>
<tr><td>ADO Rating</td><td>1 star</td></tr>
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=Asl8zefuk8gfo">AMG Rating</a></td><td>4 stars</td></tr>
<tr><td>Penguin Rating</td><td>3.5 stars</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Artist</td><td>Anthony Braxton/Richard Teitelbaum</td></tr>
<tr><td>CD</td><td>Silence/Time Zones</td></tr>
<tr><td>Copyright Date</td><td>1996</td></tr>
<tr><td>Label</td><td>Black Lion</td></tr>
<tr><td>ID</td><td>BLCD 760221</td></tr>
<tr><td>Total Time</td><td>72:58</td></tr>
<tr><td>Personnel</td><td>Anthony Braxton, sopranino and alto saxophones,
contrebasse clarinet, miscellaneous instruments;
Leo Smith, trumpet and miscellaneous instruments;
Leroy Jenkins, violin and miscellaneous instruments;
Richard Teitelbaum, modular moog and micromoog synthesizer</td></tr>
<tr><td>ADO Rating</td><td>black dot</td></tr>
<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=A5bkvu3xjan1k">AMG Rating</a></td><td>unrated</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Artist</td><td>Jules Verne</td></tr>
<tr><td>Book</td><td>Le Tour du Monde en Quatre-Vingts Jours
(Around the World in Eighty Days)</td></tr>
<tr><td>Notes</td><td>Wall-clock time plays a central role in the plot.
European readers of the 1870s clearly held the U.S. press in
deep contempt; the protagonists cross the U.S. without once
reading a paper.
An on-line French-language version of the book
"with illustrations from the original 1873 French-language edition"
is available at
<a href="http://fourmilab.ch/etexts/www/tdm80j">http://fourmilab.ch/etexts/www/tdm80j</a>
An on-line English-language translation of the book is available at
<a href="http://www.literature.org/Works/Jules-Verne/eighty">http://www.literature.org/Works/Jules-Verne/eighty</a></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Film</td><td>Bell Science - About Time</td></tr>
<tr><td>Notes</td><td>The Frank Baxter/Richard Deacon extravaganza
Information on ordering is available at
<a href="http://www.videoflicks.com/VF2/1035/1035893.ihtml">http://www.videoflicks.com/VF2/1035/1035893.ihtml</a></td></tr>
</table>
<hr />
<ul>
<li>
An episode of "The Adventures of Superman" entitled "The Mysterious
Cube," first aired 1958-02-24, had Superman convincing the controllers
of WWV to broadcast time signals five minutes ahead of actual time;
doing so got a crook trying to beat the statute of limitations to
emerge a bit too early from the titular enclosure.
</li>
<li>
The 1960s ITC television series "The Prisoner" included an episode
entitled "The Chimes of Big Ben" in which our protagonist tumbled to
the fraudulent nature of a Poland-to-England escape upon hearing "Big
Ben" chiming on Polish local time.
</li>
<li>
The series "Seinfeld" included an episode entitled "The Susie," first
broadcast 1997-02-13, in which Kramer decides that daylight saving time
isn't coming fast enough, so he sets his watch ahead an hour.
</li>
<li>
The syndicated comic strip "Dilbert" featured an all-too-rare example of
time zone humor on 1998-03-14.
</li>
<li>
Surrealist artist Guy Billout's work "Date Line" appeared on page 103
of the 1999-11 Atlantic Monthly.
</li>
<li>
"Gloom, Gloom, Go Away" by Walter Kirn appeared on page 106 of Time
Magazine's 2002-11-11 issue; among other things, it proposed
year-round DST as a way of lessening wintertime despair.
</li>
<li>
The "20 Hours in America" episode of "The West Wing," first aired 2002-09-25,
saw White House staffers stranded in Indiana; they thought they had time to
catch Air Force One but were done in by intra-Indiana local time changes.
</li>
<li>
"In what time zone would you find New York City?" was a $200 question on
the 1999-11-13 United States airing of "Who Wants to Be a Millionaire?"
"In 1883, what industry led the movement to divide the U.S. into four time
zones?" was a $32,000 question on the 2001-05-23 United States airing of
"Who Wants to Be a Millionaire?" At this rate, the million-dollar time-zone
question should have been asked 2002-06-04.
</li>
</ul>
<hr />
<ul>
<li>
"We're been using the five-cent nickle in this country since 1492.
Now that's pretty near 100 years, daylight savings [sic]."
(Groucho Marx as Captain Spaulding in "Animal Crackers", 1930,
as noted by Will Fitzerald, wfitzgerald@ameritech.net)
</li>
<li>
"Good news."
"What did they do? Extend Daylight Saving Time year round?"
(Professional tanner George Hamilton, in dialog from a
May, 1999 episode of the syndicated television series "Baywatch")
</li>
<li>
"A fundamental belief held by Americans is that if you are on land, you
cannot be killed by a fish...So most Americans remain on land, believing
they're safe. Unfortunately, this belief&mdash;like so many myths, such as that
there's a reason for 'Daylight Saving Time'&mdash;is false."
(Dave Barry column, 2000-07-02)
</li>
<li>
"I once had sex for an hour and five minutes, but that was on the day
when you turn the clocks ahead."
(Garry Shandling, 52nd Annual Emmys, 2000-09-10)
</li>
<li>
"Would it impress you if I told you I invented Daylight Savings Time?"
("Sahjhan" to "Lilah" in dialog from the "Loyalty" episode of "Angel,"
originally aired 2002-02-25)
</li>
<li>
"I thought you said Tulsa was a three hour flight."
"Well, you're forgetting about the time difference."
("Chandler" and "Joey" in dialog from the episode of "Friends" first
aired 2002-12-05)
</li>
<li>
"Is that a pertinent fact,
or are you trying to dazzle me with your command of time zones?"
(Kelsey Grammer as "Frasier Crane")
</li>
<li>
"Don't worry about the world coming to an end today.
It is already tomorrow in Australia."
(Charles M. Schulz, provided by Steve Summit)
</li>
</ul>
</body>
</html>

443
usr.sbin/zic/tz-link.htm Normal file
View File

@ -0,0 +1,443 @@
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Sources for Time Zone and Daylight Saving Time Data</title>
<link rel="schema.DC" href="http://purl.org/DC/elements/1.1/" />
<meta http-equiv="Content-type" content='text/html; charset="US-ASCII"' />
<meta name="DC.Creator" content="Eggert, Paul" />
<meta name="DC.Contributor" content="Olson, Arthur David" />
<meta name="DC.Date" content="2004-05-24" />
<meta name="DC.Description"
content="Sources of information about time zones and daylight saving time" />
<meta name="DC.Identifier" content="http://www.twinsun.com/tz/tz-link.htm" />
<meta name="Keywords"
content="database,daylight saving,DST,time zone,timezone,tz,zoneinfo" />
</head>
<body>
<h1>Sources for Time Zone and Daylight Saving Time Data</h1>
<address>
@(#)tz-link.htm 7.42
</address>
<p>
Please send corrections to this web page to the
<a href="mailto:tz@elsie.nci.nih.gov">time zone mailing list</a>.
</p>
<h2>The <code>tz</code> database</h2>
<p>
The public-domain time zone database contains code and data
that represent the history of local time
for many representative locations around the globe.
It is updated periodically to reflect changes made by political bodies
to UTC offsets and daylight-saving rules.
This database (often called <code>tz</code> or <code>zoneinfo</code>)
is used by several implementations,
including
<a href="http://www.gnu.org/software/libc/">the GNU C Library</a> used in
<a href="http://www.linux.org/">GNU/Linux</a>,
<a href="http://www.freebsd.org/">FreeBSD</a>,
<a href="http://www.netbsd.org/">NetBSD</a>,
<a href="http://www.openbsd.org/">OpenBSD</a>,
<a href="http://www.cygwin.com/">Cygwin</a>,
<a href="http://www.delorie.com/djgpp/">DJGPP</a>,
<a href="http://www.hp.com/products1/unix/operating/">HP-UX</a>,
<a href="http://www.sgi.com/developers/technology/irix/">IRIX</a>,
<a href="http://www.apple.com/macosx/">Mac OS X</a>,
<a href="http://h71000.www7.hp.com/">OpenVMS</a>,
<a href="http://wwws.sun.com/software/solaris/">Solaris</a>,
<a href="http://www.tru64unix.compaq.com/">Tru64</a>, and
<a href="http://www.sco.com/products/unixware/">UnixWare</a>.</p>
<p>
Each location in the database represents a national region where all
clocks keeping local time have agreed since 1970.
Locations are identified by continent or ocean and then by the name of
the location, which is typically the largest city within the region.
For example, <code>America/New_York</code>
represents most of the US eastern time zone;
<code>America/Indianapolis</code> represents most of Indiana, which
uses eastern time without daylight saving time (DST);
<code>America/Detroit</code> represents most of Michigan, which uses
eastern time but with different DST rules in 1975;
and other entries represent smaller regions like Starke County,
Kentucky, which switched from central to eastern time in 1991.
To use the database, set the <code>TZ</code> environment variable to
the location's full name, e.g., <code>TZ="America/New_York"</code>.</p>
<p>
In the <code>tz</code> database's
<a href="ftp://elsie.nci.nih.gov/pub/">FTP distribution</a>,
the code is in the file <code>tzcode<var>C</var>.tar.gz</code>,
where <code><var>C</var></code> is the code's version;
similarly, the data are in <code>tzdata<var>D</var>.tar.gz</code>,
where <code><var>D</var></code> is the data's version.
The following shell commands download
these files to a GNU/Linux or similar host; see the downloaded
<code>README</code> file for what to do next.</p>
<pre style="margin-left: 2em"><code><a href="http://www.gnu.org/software/wget/">wget</a> 'ftp://elsie.nci.nih.gov/pub/tz*.tar.gz'
<a href="http://www.gnu.org/software/gzip/">gzip</a> -dc tzcode*.tar.gz | <a href="http://www.gnu.org/software/tar/">tar</a> -xf -
gzip -dc tzdata*.tar.gz | tar -xf -
</code></pre>
<p>
The code lets you compile the <code>tz</code> source files into
machine-readable binary files, one for each location. It also lets
you read a <code>tz</code> binary file and interpret time stamps for that
location.</p>
<p>
The data are by no means authoritative. If you find errors, please
send changes to the <a href="mailto:tz@elsie.nci.nih.gov">time zone
mailing list</a>. You can also <a
href="mailto:tz-request@elsie.nci.nih.gov">subscribe</a> to the
mailing list, retrieve the <a
href="ftp://elsie.nci.nih.gov/pub/tzarchive.gz">archive of old
messages</a> (in gzip compressed format), or retrieve <a
href="ftp://munnari.oz.au/pub/oldtz/">archived older versions of code
and data</a>.</p>
<p>
The Web has several other sources for time zone and daylight saving time data.
Here are some recent links that may be of interest.
</p>
<h2>Web pages using recent versions of the <code>tz</code> database</h2>
<ul>
<li><a href="http://twiki.org/cgi-bin/xtra/tzdate">Date and Time Gateway</a>
is a text-based point-and-click interface to tables of current time
throughout the world.</li>
<li>Fancier web interfaces, roughly in ascending order of complexity, include:
<ul>
<li><a href="http://www.hilink.com.au/times/">Local Times Around the
World</a></li>
<li><a href="http://www.convertit.com/Go/ConvertIt/World_Time/Current_Time.ASP">Current Time in 1000 Places</a></li>
<li><a href="http://timezoneconverter.com/">Time Zone Converter</a></li>
</ul></li>
<li><a href="http://www.holidayfestival.com/">The Worldwide Holiday
&amp; Festival Site</a> lists DST-related clock changes along with
holidays.</li>
<li><a href="http://www.timeanddate.com/worldclock/">The World Clock -
Time Zones</a>
is a web interface to a time zone database derived from
<code>tz</code>'s.</li>
</ul>
<h2>Other time zone database formats</h2>
<ul>
<li>The <a href="ftp://ftp.rfc-editor.org/in-notes/rfc2445.txt">
Internet Calendaring and Scheduling Core Object Specification
(iCalendar)</a> specification published by the <a
href="http://www.ietf.org/html.charters/calsch-charter.html">IETF
Calendaring and Scheduling Working Group (calsch)</a> covers time zone
data; see its VTIMEZONE calendar component.</li>
<li>The <a
href="http://lists.w3.org/Archives/Public/www-rdf-calendar/">www-rdf-calendar</a>
list discusses <a href="http://www.w3.org/RDF/">RDF</a>-based calendar
and group scheduling systems, and has a <a
href="http://www.w3.org/2002/12/cal/#tzd">workspace on time zone
data</a> converted from <code>tz</code>. An earlier <a
href="http://www.w3.org/2000/01/foo">schema</a> was sketched out by <a
href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a>.</li>
<li><a
href="http://www.calsch.org/ietf/archives/draft-ietf-calsch-many-xcal-02.txt">XCal</a>
was a draft <a href="http://www.w3.org/XML/">XML</a> document type
definition that corresponded to iCalendar.</li>
</ul>
<h2>Other <code>tz</code> compilers</h2>
<ul>
<li><a href="http://www.dachaplin.dsl.pipex.com/vzic">Vzic iCalendar
Timezone Converter</a> describes a program Vzic that compiles
<code>tz</code> source into iCalendar-compatible VTIMEZONE files.
Vzic is freely
available under the <a href="http://www.gnu.org/copyleft/gpl.html">GNU
General Public License (GPL)</a>.</li>
<li><a
href="http://search.cpan.org/dist/DateTime-TimeZone/">DateTime::TimeZone</a>
contains a script <code>parse_olson</code> that compiles
<code>tz</code> source into <a href="http://www.perl.org/">Perl</a>
modules. It is part of the Perl <a
href="http://datetime.perl.org/">DateTime Project</a>, which is freely
available under both the GPL and the Perl <a
href="http://www.perl.com/language/misc/Artistic.html">Artistic
License</a>. DateTime::TimeZone also contains a script
<code>tests_from_zdump</code> that generates test cases for each clock
transition in the <code>tz</code> database.</li>
<li><a href="http://oss.software.ibm.com/icu/">International Components for
Unicode (ICU)</a> contains a C/C++ library for internationalization that
has a compiler from <samp>tz</samp> source into an ICU-specific format.
ICU is freely available under a BSD-style license.</li>
<li><a href="http://joda-time.sourceforge.net/">Joda Time - Java date
and time API</a> contains a class
<code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles
<code>tz</code> source into a Joda-specific binary format. Joda Time
is freely available under a BSD-style license.</li>
</ul>
<h2>Other <code>tz</code> binary file readers</h2>
<ul>
<li>The <a href="http://www.gnu.org/software/libc/">GNU C Library</a>
has an independent, thread-safe implementation of
a <code>tz</code> binary file reader.
This library is freely available under the
<a href="http://www.gnu.org/copyleft/lesser.html">
GNU Lesser General Public License (LGPL)</a>,
and is widely used in GNU/Linux systems.</li>
<li><a href="http://www.bmsi.com/java/#TZ">ZoneInfo.java</a>
is a <code>tz</code> binary file reader written in Java.
It is freely available under the GNU LGPL.</li>
<li><a href="http://s.keim.free.fr/tz/doc.html">Python time zones</a>
is a <code>tz</code> binary file reader written in <a
href="http://www.python.org/">Python</a>. It is freely available
under a BSD-style license.</li>
</ul>
<h2>Other <code>tz</code>-based time zone conversion software</h2>
<ul>
<li><a href="http://java.sun.com/">Sun Java</a> releases since 1.4
contain a copy of a recent <samp>tz</samp> database in a Java-specific
format.</li>
<li><a
href="http://www1.tip.nl/~t876506/AboutTimeZonesHC.html">HyperCard
time zones calculator</a> is a HyperCard stack.</li>
<li><a
href="http://www.cimmyt.org/timezone/">World Time Explorer</a> is a
Microsoft Windows program.</li>
</ul>
<h2>Other time zone databases</h2>
<ul>
<li><a href="http://www.astro.com/cgi-bin/atlw3/aq.cgi?lang=e">Atlas Query
- Astrodienst</a> is Astrodienst's Web version of Shanks's
excellent time zone history atlases published in both <a
href="http://astrocom.com/software/pcatlas.php">computer</a> and <a
href="http://astrocom.com/books/xrefa.php#SHANKS">book</a> form by <a
href="http://astrocom.com/">Astro Communications Services</a>.</li>
<li><a href="http://worldtime.com/">WORLDTIME: interactive atlas,
time info, public holidays</a>
contains information on local time, sunrise and sunset,
and public holidays in several hundred cities around the world.</li>
<li><a href="http://www.worldtimeserver.com/">World Time Server</a>
is another time zone database.</li>
<li><a href="http://tycho.usno.navy.mil/tzones.html">World Time Zones</a>
contains data from the Time Service Department of the US Naval Observatory
(USNO), used as the source
for the <code>usno*</code> files in the <code>tz</code> distribution.</li>
<li><a href="http://www.airportcitycodes.com/aaa/">Airlines, Airplanes
and Airports</a> lists current standard times for thousands of
airports around the world. This seems to be derived from
the <a href="http://www.iata.org/sked/publications/">Standard
Schedules Information Manual (SSIM)</a> of the
the <a href="http://www.iata.org/">International Air Transport
Association</a>,
which gives current time zone rules for
all the airports served by commercial aviation.</li>
</ul>
<h2>Maps</h2>
<ul>
<li>The <a href="http://www.odci.gov/">United States Central
Intelligence Agency (CIA)</a> publishes a <a
href="http://www.odci.gov/cia/publications/factbook/reference_maps/pdf/time_zones.pdf">time
zone map</a>; the
<a
href="http://www.lib.utexas.edu/maps/world.html">Perry-Casta&ntilde;eda
Library Map Collection</a>
of the University of Texas at Austin has copies of
recent editions.
The pictorial quality is good,
but the maps do not indicate summer time,
and parts of the data are a few years out of date.</li>
<li><a href="http://worldtimezone.com/">World timezones map with
current time</a>
has several fancy time zone maps; it covers Russia particularly well.
The maps' pictorial quality is not quite as good as the CIA's
but the maps are more up to date.</li>
</ul>
<h2>Time zone boundaries</h2>
<ul>
<li><a href="http://home-4.tiscali.nl/~t876506/Multizones.html">Time
zone boundaries for multizone countries</a> summarizes legal
boundaries between time zones within countries.</li>
<li>Manifold.net's <a
href="http://www.manifold.net/download/freemaps.html">Free Maps and
GIS Data</a> includes a Manifold-format map of world time zone
boundaries distributed under the GPL. The GeoCommunity's <a
href="http://software.geocomm.com/data/intl_timezones.html">International
Time Zones</a> publishes the same data in other formats.</li>
<li>The US Geological Survey's National Atlas of the United States
publishes the <a href="http://www.nationalatlas.gov/timeznm.html">Time
Zones of the United States</a> in the public domain.</li>
<li>The GeoCommunity lists several commercial sources for <a
href="http://spatialnews.geocomm.com/features/timezones/">International
Time Zones and Time Zone Data</a>.</li>
</ul>
<h2>Civil time concepts and history</h2>
<ul>
<li><a href="http://physics.nist.gov/time">A Walk through Time</a>
surveys the evolution of timekeeping.</li>
<li><a href="http://webexhibits.org/daylightsaving/">About Daylight
Saving Time - History, rationale, laws and dates</a>
is an overall history of DST.</li>
<li><a href="http://toi.iriti.cnr.it/">The
Time of Internet</a>
describes time zones and daylight saving time,
with diagrams.
The time zone map is out of date, however.</li>
<li><a href="http://www.phys.uu.nl/~vgent/idl/idl.htm">A History of
the International Date Line</a> tells the story of the most important
time zone boundary.</li>
<li><a href="http://www.statoids.com/tconcept.html">Basic Time
Zone Concepts</a> discusses terminological issues behind time zones.</li>
</ul>
<h2>National histories of legal time</h2>
<dl>
<dt>Australia</dt>
<dd>The Community Relations Division of the New South Wales (NSW)
Attorney General's Department maintains a <a
href="http://www.lawlink.nsw.gov.au/crd.nsf/pages/time2">history of
daylight saving in NSW</a>.</dd>
<dt>Austria</dt>
<dd>The Federal Office of Metrology and Surveying publishes a
table of <a href="http://www.metrologie.at/pdf/sommerzeit.pdf"
hreflang="de">daylight saving time in Austria (in German)</a>.</dd>
<dt>Belgium</dt>
<dd>The Royal Observatory of Belgium maintains a table of <a
href="http://www.astro.oma.be/GENERAL/INFO/nli001a.html"
hreflang="nl">time in Belgium (in Dutch)</a>.</dd>
<dt>Brazil</dt>
<dd>The Time Service Department of the National Observatory
records <a href="http://pcdsh01.on.br/DecHV.html"
hreflang="pt-BR">Brazil's daylight saving time decrees (in
Portuguese)</a>.</dd>
<dt>Canada</dt>
<dd>The Institute for National Measurement Standards publishes current
and some older information about <a
href="http://inms-ienm.nrc-cnrc.gc.ca/time_services/daylight_savings_e.html">Time
Zones and Daylight Saving Time</a>.</dd>
<dt>Chile</dt>
<dd>WebExhibits publishes a <a
href="http://webexhibits.org/daylightsaving/chile.html"
hreflang="es">history of official time (in Spanish)</a> originally
written by the Chilean Hydrographic and Oceanographic Service.</dd>
<dt>Germany</dt>
<dd>The National Institute for Science and Technology maintains the <a
href="http://www.ptb.de/en/org/4/44/441/dars_e.htm">Realisation of
Legal Time in Germany</a>.</dd>
<dt>Israel</dt>
<dd>The Interior Ministry periodically issues <a
href="ftp://ftp.cs.huji.ac.il/pub/tz/announcements/"
hreflang="he">announcements (in Hebrew)</a>.</dd>
<dt>Mexico</dt>
<dd>The Investigation and Analysis Service of the Mexican Library of
Congress has published a <a
href="http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/"
hreflang="es">history of Mexican local time (in Spanish)</a>.</dd>
<dt>Malaysia</dt>
<dd>See Singapore below.</dd>
<dt>Netherlands</dt>
<dd><a href="http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm"
hreflang="nl">Legal time in the Netherlands (in Dutch)</a>
covers the history of local time in the Netherlands from ancient times.</dd>
<dt>New Zealand</dt>
<dd>The Department of Internal Affairs maintains a brief history <a
href="http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Resource-material-Information-We-Provide-About-Daylight-Saving">about
daylight saving</a>. The privately-maintained <a
href="http://www.astrologyhouse.co.nz/timechanges.htm">Time Changes in
New Zealand</a> has more details.</dd>
<dt>Singapore</dt>
<dd><a
href="http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html">Why
is Singapore in the "Wrong" Time Zone?</a> details the
history of legal time in Singapore and Malaysia.</dd>
<dt>United Kingdom</dt>
<dd><a
href="http://www.srcf.ucam.org/~jsm28/british-time/">History of
legal time in Britain</a> discusses in detail the country
with perhaps the best-documented history of clock adjustments.
The National Physical Laboratory also maintains an <a
href="http://www.npl.co.uk/time/summer_time_archive.html">archive
of summer time dates</a>.</dd>
</dl>
<h2>Precision timekeeping</h2>
<ul>
<li><a
href="http://literature.agilent.com/litwebbin/purl.cgi?org_id=tmo&amp;pub_id=5965-7984E">The
Science of Timekeeping</a> is a thorough introduction
to the theory and practice of precision timekeeping.</li>
<li><a href="http://www.ntp.org/">NTP: The Network Time Protocol</a>
discusses how to synchronize clocks of
Internet hosts.</li>
<li><a href="http://gauss.gge.unb.ca/GMT.UT.and.the.RGO.txt"
charset="macintosh">A
Few Facts Concerning GMT, UT, and the RGO</a>
answers questions like "What is the difference between GMT and UTC?"</li>
<li><a
href="http://www.gb.nrao.edu/~rfisher/Ephemerides/times.html">Astronomical
Times</a> explains more abstruse astronomical time scales like TT, TCG,
and TDB.</li>
<li>The <a href="http://www.iau.org/">IAU</a>'s <a
href="http://www.iau-sofa.rl.ac.uk/">Standards Of Fundamental
Astronomy</a> (SOFA) initiative publishes Fortran code for converting
among time scales like TAI, TDB, TT and UTC.</li>
<li><a href="http://www.jpl.nasa.gov/basics/bsf2-3.htm">Basics of
Space Flight - Reference Systems - Time Conventions</a>
briefly explains interplanetary space flight timekeeping.</li>
<li><a
href="http://www.giss.nasa.gov/tools/mars24/help/notes.html">Technical
Notes on Mars Solar Time as Adopted by the Mars24 Sunclock</a> briefly
describes Mars Coordinated Time (MTC) and the diverse local time
scales used by each landed mission on Mars.</li>
<li><a
href="http://hpiers.obspm.fr/eop-pc/products/bulletins/bulletins.html">Bulletins
maintained by the IERS EOP (PC)</a> contains official publications of
the Earth Orientation Parameters Product Center of the
International Earth Rotation Service, the committee that decides
when leap seconds occur.</li>
<li>The <a
href="http://www.mail-archive.com/leapsecs@rom.usno.navy.mil/">Leap
Second Discussion List</a> covers McCarthy and Klepczynski's proposal
to discontinue leap seconds, published in <a
href="http://www.gpsworld.com/">GPS World</a> <strong>10</strong>, 11
(1999-11), 50&ndash;57 and discussed further in R. A. Nelson et al.,
<a href="http://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf">The
leap second: its history and possible future</a>,
<a href="http://www.bipm.fr/metrologia/metrologia.html">Metrologia</a>
<strong>38</strong> (2001), 509&ndash;529.
<a href="http://www.ucolick.org/~sla/leapsecs/onlinebib.html">The
Future of Leap Seconds</a> catalogs information about this
contentious issue.</li>
</ul>
<h2>Time notation</h2>
<ul>
<li>
<a href="http://www.cl.cam.ac.uk/~mgk25/iso-time.html">A Summary of
the International Standard Date and Time Notation</a> is a good
summary of ISO
8601:1988 - Data elements and interchange formats - Information interchange
- Representation of dates and times (which has been superseded by
<a href="http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=26780">ISO 8601:2000</a>).</li>
<li>
Section 3.3 of <a
href="ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt">Internet RFC 2822</a>
specifies the time notation used in email and <a
href="ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt">HTTP</a> headers.</li>
<li>
<a href="ftp://ftp.rfc-editor.org/in-notes/rfc3339.txt">Internet RFC
3339</a> specifies an ISO 8601 profile for use in new Internet
protocols.</li>
<li>
<a href="http://www.exit109.com/~ghealton/y2k/yrexamples.html">The
Best of Dates, the Worst of Dates</a> covers many problems encountered
by software developers when handling dates and time stamps.</li>
<li>
Alphabetic time zone abbreviations should not be used as unique
identifiers for UTC offsets as they are ambiguous in practice. For
example, "EST" denotes 5 hours behind UTC in English-speaking North
America, but it denotes 10 or 11 hours ahead of UTC in Australia;
and French-speaking North Americans prefer "HNE" to "EST". For
compatibility with <a href="http://www.pasc.org/#POSIX">POSIX</a> the
<code>tz</code> database contains English abbreviations for all time
stamps but in many cases these are merely inventions of the database
maintainers.</li>
</ul>
<h2>Related indexes</h2>
<ul>
<li><a href="tz-art.htm">Time and the Arts</a></li>
<li><a href="http://dmoz.org/Reference/Time/">Open Directory -
Reference: Time</a></li>
<li><a href="http://directory.google.com/Top/Reference/Time/">Google Directory - Reference &gt; Time</a></li>
<li><a href="http://dir.yahoo.com/Science/Measurements_and_Units/Time/">Yahoo! Science &gt; Measurements and Units &gt; Time</a></li>
</ul>
</body>
</html>

View File

@ -4,6 +4,9 @@ zdump \- time zone dumper
.SH SYNOPSIS
.B zdump
[
.B \-\-version
]
[
.B \-v
] [
.B \-c
@ -16,6 +19,9 @@ named on the command line.
.PP
These options are available:
.TP
.BI "\-\-version"
Output version information and exit.
.TP
.B \-v
For each
.I zonename
@ -36,4 +42,4 @@ otherwise.
Cut off the verbose output near the start of the given year.
.SH "SEE ALSO"
newctime(3), tzfile(5), zic(8)
.\" @(#)zdump.8 7.3
.\" @(#)zdump.8 7.4

View File

@ -1,8 +1,4 @@
#ifndef lint
#ifndef NOID
static char elsieid[] = "@(#)zdump.c 7.28";
#endif /* !defined NOID */
#endif /* !defined lint */
static char elsieid[] = "@(#)zdump.c 7.31";
/*
** This code has been made independent of the rest of the time
@ -162,6 +158,11 @@ char * argv[];
(void) textdomain(TZ_DOMAIN);
#endif /* HAVE_GETTEXT - 0 */
progname = argv[0];
for (i = 1; i < argc; ++i)
if (strcmp(argv[i], "--version") == 0) {
(void) printf("%s\n", elsieid);
(void) exit(EXIT_SUCCESS);
}
vflag = 0;
cutoff = NULL;
while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v')
@ -171,7 +172,7 @@ char * argv[];
if ((c != EOF && c != -1) ||
(optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {
(void) fprintf(stderr,
_("%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"),
_("%s: usage is %s [ --version ] [ -v ] [ -c cutoff ] zonename ...\n"),
argv[0], argv[0]);
(void) exit(EXIT_FAILURE);
}
@ -263,9 +264,8 @@ _("%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"),
show(argv[i], t, TRUE);
}
if (fflush(stdout) || ferror(stdout)) {
(void) fprintf(stderr, _("%s: Error writing "),
argv[0]);
(void) perror(_("standard output"));
(void) fprintf(stderr, "%s: ", argv[0]);
(void) perror(_("Error writing standard output"));
(void) exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);

View File

@ -4,6 +4,9 @@ zic \- time zone compiler
.SH SYNOPSIS
.B zic
[
.B \-\-version
]
[
.B \-v
] [
.B \-d
@ -44,6 +47,9 @@ the standard input is read.
.PP
These options are available:
.TP
.BI "\-\-version"
Output version information and exit.
.TP
.BI "\-d " directory
Create time conversion information files in the named directory rather than
in the standard directory named below.
@ -75,6 +81,10 @@ Complain if a year that appears in a data file is outside the range
of years representable by
.IR time (2)
values.
Also complain if a time of 24:00
(which cannot be handled by pre-1998 versions of
.IR zic )
appears in the input.
.TP
.B \-s
Limit time values stored in output files to values that are the same
@ -202,6 +212,7 @@ Recognized forms include:
2:00 time in hours and minutes
15:00 24-hour format time (for times after noon)
1:28:14 time in hours, minutes, and seconds
\- equivalent to 0
.fi
.in -.5i
.sp
@ -410,4 +421,4 @@ the earliest transition time recorded in the compiled file is correct.
/usr/local/etc/zoneinfo standard directory used for created files
.SH "SEE ALSO"
newctime(3), tzfile(5), zdump(8)
.\" @(#)zic.8 7.18
.\" @(#)zic.8 7.22

View File

@ -1,15 +1,17 @@
#ifndef lint
#ifndef NOID
static char elsieid[] = "@(#)zic.c 7.96";
#endif /* !defined NOID */
#endif /* !defined lint */
static char elsieid[] = "@(#)zic.c 7.116";
#include "private.h"
#include "locale.h"
#include "tzfile.h"
#ifdef unix
#include "sys/stat.h" /* for umask manifest constants */
#endif /* defined unix */
#if HAVE_SYS_STAT_H
#include "sys/stat.h"
#endif
#ifdef S_IRUSR
#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
#else
#define MKDIR_UMASK 0755
#endif
/*
** On some ancient hosts, predicates like `isspace(C)' are defined
@ -440,7 +442,7 @@ const char * const string;
static void
usage P((void))
{
(void) fprintf(stderr, _("%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d directory ]\n\t[ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
(void) fprintf(stderr, _("%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
progname, progname);
(void) exit(EXIT_FAILURE);
}
@ -472,6 +474,11 @@ char * argv[];
(void) textdomain(TZ_DOMAIN);
#endif /* HAVE_GETTEXT - 0 */
progname = argv[0];
for (i = 1; i < argc; ++i)
if (strcmp(argv[i], "--version") == 0) {
(void) printf("%s\n", elsieid);
(void) exit(EXIT_SUCCESS);
}
while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)
switch (c) {
default:
@ -563,12 +570,18 @@ _("%s: More than one -L option specified\n"),
/*
** Make links.
*/
for (i = 0; i < nlinks; ++i)
for (i = 0; i < nlinks; ++i) {
eat(links[i].l_filename, links[i].l_linenum);
dolink(links[i].l_from, links[i].l_to);
if (lcltime != NULL)
}
if (lcltime != NULL) {
eat("command line", 1);
dolink(lcltime, TZDEFAULT);
if (psxrules != NULL)
}
if (psxrules != NULL) {
eat("command line", 1);
dolink(psxrules, TZDEFRULES);
}
return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
@ -605,12 +618,22 @@ const char * const tofile;
if (mkdirs(toname) != 0)
(void) exit(EXIT_FAILURE);
result = link(fromname, toname);
#if (HAVE_SYMLINK - 0)
if (result != 0) {
result = symlink(fromname, toname);
#if (HAVE_SYMLINK - 0)
if (result != 0 &&
access(fromname, F_OK) == 0 &&
!itsdir(fromname)) {
const char *s = tofile;
register char * symlinkcontents = NULL;
while ((s = strchr(s+1, '/')) != NULL)
symlinkcontents = ecatalloc(symlinkcontents, "../");
symlinkcontents = ecatalloc(symlinkcontents, fromfile);
result = symlink(symlinkcontents, toname);
if (result == 0)
warning(_("hard link failed, symbolic link used"));
ifree(symlinkcontents);
}
#endif
if (result != 0) {
@ -908,6 +931,8 @@ const int signable;
error(errstring);
return 0;
}
if (noise && hh == HOURSPERDAY)
warning(_("24:00 not handled by pre-1998 versions of zic"));
return eitol(sign) *
(eitol(hh * MINSPERHOUR + mm) *
eitol(SECSPERMIN) + eitol(ss));
@ -1132,14 +1157,15 @@ const int nfields;
error(_("time before zero"));
return;
}
t = (time_t) dayoff * SECSPERDAY;
/*
** Cheap overflow check.
*/
if (t / SECSPERDAY != dayoff) {
error(_("time overflow"));
if (dayoff < min_time / SECSPERDAY) {
error(_("time too small"));
return;
}
if (dayoff > max_time / SECSPERDAY) {
error(_("time too large"));
return;
}
t = (time_t) dayoff * SECSPERDAY;
tod = gethms(fields[LP_TIME], _("invalid time of day"), FALSE);
cp = fields[LP_CORR];
{
@ -1292,9 +1318,9 @@ const char * const timep;
return;
} else if (noise) {
if (rp->r_loyear < min_year_representable)
warning(_("starting year too low to be represented"));
warning(_("ending year too low to be represented"));
else if (rp->r_loyear > max_year_representable)
warning(_("starting year too high to be represented"));
warning(_("ending year too high to be represented"));
}
if (rp->r_loyear > rp->r_hiyear) {
error(_("starting year greater than ending year"));
@ -1585,16 +1611,16 @@ const int zonecount;
typecnt = 0;
charcnt = 0;
/*
** A guess that may well be corrected later.
*/
stdoff = 0;
/*
** Thanks to Earl Chew (earl@dnd.icp.nec.com.au)
** for noting the need to unconditionally initialize startttisstd.
*/
startttisstd = FALSE;
startttisgmt = FALSE;
for (i = 0; i < zonecount; ++i) {
/*
** A guess that may well be corrected later.
*/
stdoff = 0;
zp = &zpfirst[i];
usestart = i > 0 && (zp - 1)->z_untiltime > min_time;
useuntil = i < (zonecount - 1);
@ -1614,8 +1640,7 @@ const int zonecount;
if (usestart) {
addtt(starttime, type);
usestart = FALSE;
}
else if (stdoff != 0)
} else if (stdoff != 0)
addtt(min_time, type);
} else for (year = min_year; year <= max_year; ++year) {
if (useuntil && year > zp->z_untilrule.r_hiyear)
@ -1892,10 +1917,12 @@ const char * const type;
buf = erealloc(buf, (int) (132 + strlen(yitcommand) + strlen(type)));
(void) sprintf(buf, "%s %d %s", yitcommand, year, type);
result = system(buf);
if (result == 0)
return TRUE;
if (result == (1 << 8))
return FALSE;
if (WIFEXITED(result)) switch (WEXITSTATUS(result)) {
case 0:
return TRUE;
case 1:
return FALSE;
}
error(_("Wild result from command execution"));
(void) fprintf(stderr, _("%s: command was '%s', result was %d\n"),
progname, buf, result);
@ -2112,18 +2139,17 @@ register const int wantedy;
--i;
}
if (i < 0 || i >= len_months[isleap(y)][m]) {
error(_("no day in month matches rule"));
(void) exit(EXIT_FAILURE);
if (noise)
warning(_("rule goes past start/end of month--will not work with pre-2004 versions of zic"));
}
}
if (dayoff < 0 && !TYPE_SIGNED(time_t))
return min_time;
if (dayoff < min_time / SECSPERDAY)
return min_time;
if (dayoff > max_time / SECSPERDAY)
return max_time;
t = (time_t) dayoff * SECSPERDAY;
/*
** Cheap overflow check.
*/
if (t / SECSPERDAY != dayoff)
return (dayoff > 0) ? max_time : min_time;
return tadd(t, rp->r_tod);
}
@ -2171,7 +2197,7 @@ char * const argname;
** created by some other multiprocessor, so we get
** to do extra checking.
*/
if (mkdir(name, S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) != 0) {
if (mkdir(name, MKDIR_UMASK) != 0) {
const char *e = strerror(errno);
if (errno != EEXIST || !itsdir(name)) {
@ -2206,5 +2232,5 @@ const int i;
}
/*
** UNIX was a registered trademark of UNIX System Laboratories in 1993.
** UNIX was a registered trademark of The Open Group in 2003.
*/