xref: /minix3/lib/libc/time/Theory (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel SambucTheory and pragmatics of the tz code and data
2*0a6a1f1dSLionel Sambuc
32fe8fb19SBen Gras
42fe8fb19SBen Gras----- Outline -----
52fe8fb19SBen Gras
6f14fb602SLionel Sambuc	Scope of the tz database
7*0a6a1f1dSLionel Sambuc	Names of time zone rules
82fe8fb19SBen Gras	Time zone abbreviations
9*0a6a1f1dSLionel Sambuc	Accuracy of the tz database
10*0a6a1f1dSLionel Sambuc	Time and date functions
112fe8fb19SBen Gras	Calendrical issues
122fe8fb19SBen Gras	Time and time zones on Mars
132fe8fb19SBen Gras
142fe8fb19SBen Gras
15*0a6a1f1dSLionel Sambuc----- Scope of the tz database -----
16*0a6a1f1dSLionel Sambuc
17*0a6a1f1dSLionel SambucThe tz database attempts to record the history and predicted future of
18*0a6a1f1dSLionel Sambucall computer-based clocks that track civil time.  To represent this
19*0a6a1f1dSLionel Sambucdata, the world is partitioned into regions whose clocks all agree
20*0a6a1f1dSLionel Sambucabout time stamps that occur after the somewhat-arbitrary cutoff point
21*0a6a1f1dSLionel Sambucof the POSIX Epoch (1970-01-01 00:00:00 UTC).  For each such region,
22*0a6a1f1dSLionel Sambucthe database records all known clock transitions, and labels the region
23*0a6a1f1dSLionel Sambucwith a notable location.  Although 1970 is a somewhat-arbitrary
24*0a6a1f1dSLionel Sambuccutoff, there are significant challenges to moving the cutoff earlier
25*0a6a1f1dSLionel Sambuceven by a decade or two, due to the wide variety of local practices
26*0a6a1f1dSLionel Sambucbefore computer timekeeping became prevalent.
27*0a6a1f1dSLionel Sambuc
28*0a6a1f1dSLionel SambucClock transitions before 1970 are recorded for each such location,
29*0a6a1f1dSLionel Sambucbecause most systems support time stamps before 1970 and could
30*0a6a1f1dSLionel Sambucmisbehave if data entries were omitted for pre-1970 transitions.
31*0a6a1f1dSLionel SambucHowever, the database is not designed for and does not suffice for
32*0a6a1f1dSLionel Sambucapplications requiring accurate handling of all past times everywhere,
33*0a6a1f1dSLionel Sambucas it would take far too much effort and guesswork to record all
34*0a6a1f1dSLionel Sambucdetails of pre-1970 civil timekeeping.
35*0a6a1f1dSLionel Sambuc
36*0a6a1f1dSLionel SambucAs described below, reference source code for using the tz database is
37*0a6a1f1dSLionel Sambucalso available.  The tz code is upwards compatible with POSIX, an
38*0a6a1f1dSLionel Sambucinternational standard for UNIX-like systems.  As of this writing, the
39*0a6a1f1dSLionel Sambuccurrent edition of POSIX is:
402fe8fb19SBen Gras
4184d9c625SLionel Sambuc  The Open Group Base Specifications Issue 7
4284d9c625SLionel Sambuc  IEEE Std 1003.1, 2013 Edition
4384d9c625SLionel Sambuc  <http://pubs.opengroup.org/onlinepubs/9699919799/>
442fe8fb19SBen Gras
45*0a6a1f1dSLionel Sambuc
46*0a6a1f1dSLionel Sambuc
47*0a6a1f1dSLionel Sambuc----- Names of time zone rules -----
48*0a6a1f1dSLionel Sambuc
49*0a6a1f1dSLionel SambucEach of the database's time zone rules has a unique name.
50*0a6a1f1dSLionel SambucInexperienced users are not expected to select these names unaided.
51*0a6a1f1dSLionel SambucDistributors should provide documentation and/or a simple selection
52*0a6a1f1dSLionel Sambucinterface that explains the names; for one example, see the 'tzselect'
53*0a6a1f1dSLionel Sambucprogram in the tz code.  The Unicode Common Locale Data Repository
54*0a6a1f1dSLionel Sambuc<http://cldr.unicode.org/> contains data that may be useful for other
55*0a6a1f1dSLionel Sambucselection interfaces.
56*0a6a1f1dSLionel Sambuc
57*0a6a1f1dSLionel SambucThe time zone rule naming conventions attempt to strike a balance
58*0a6a1f1dSLionel Sambucamong the following goals:
59*0a6a1f1dSLionel Sambuc
60*0a6a1f1dSLionel Sambuc * Uniquely identify every region where clocks have agreed since 1970.
61*0a6a1f1dSLionel Sambuc   This is essential for the intended use: static clocks keeping local
62*0a6a1f1dSLionel Sambuc   civil time.
63*0a6a1f1dSLionel Sambuc
64*0a6a1f1dSLionel Sambuc * Indicate to experts where that region is.
65*0a6a1f1dSLionel Sambuc
66*0a6a1f1dSLionel Sambuc * Be robust in the presence of political changes.  For example, names
67*0a6a1f1dSLionel Sambuc   of countries are ordinarily not used, to avoid incompatibilities
68*0a6a1f1dSLionel Sambuc   when countries change their name (e.g. Zaire->Congo) or when
69*0a6a1f1dSLionel Sambuc   locations change countries (e.g. Hong Kong from UK colony to
70*0a6a1f1dSLionel Sambuc   China).
71*0a6a1f1dSLionel Sambuc
72*0a6a1f1dSLionel Sambuc * Be portable to a wide variety of implementations.
73*0a6a1f1dSLionel Sambuc
74*0a6a1f1dSLionel Sambuc * Use a consistent naming conventions over the entire world.
75*0a6a1f1dSLionel Sambuc
76*0a6a1f1dSLionel SambucNames normally have the form AREA/LOCATION, where AREA is the name
77*0a6a1f1dSLionel Sambucof a continent or ocean, and LOCATION is the name of a specific
78*0a6a1f1dSLionel Sambuclocation within that region.  North and South America share the same
79*0a6a1f1dSLionel Sambucarea, 'America'.  Typical names are 'Africa/Cairo', 'America/New_York',
80*0a6a1f1dSLionel Sambucand 'Pacific/Honolulu'.
81*0a6a1f1dSLionel Sambuc
82*0a6a1f1dSLionel SambucHere are the general rules used for choosing location names,
83*0a6a1f1dSLionel Sambucin decreasing order of importance:
84*0a6a1f1dSLionel Sambuc
85*0a6a1f1dSLionel Sambuc	Use only valid POSIX file name components (i.e., the parts of
86*0a6a1f1dSLionel Sambuc		names other than '/').  Do not use the file name
87*0a6a1f1dSLionel Sambuc		components '.' and '..'.  Within a file name component,
88*0a6a1f1dSLionel Sambuc		use only ASCII letters, '.', '-' and '_'.  Do not use
89*0a6a1f1dSLionel Sambuc		digits, as that might create an ambiguity with POSIX
90*0a6a1f1dSLionel Sambuc		TZ strings.  A file name component must not exceed 14
91*0a6a1f1dSLionel Sambuc		characters or start with '-'.  E.g., prefer 'Brunei'
92*0a6a1f1dSLionel Sambuc		to 'Bandar_Seri_Begawan'.  Exceptions: see the discussion
93*0a6a1f1dSLionel Sambuc		of legacy names below.
94*0a6a1f1dSLionel Sambuc	A name must not be empty, or contain '//', or start or end with '/'.
95*0a6a1f1dSLionel Sambuc	Do not use names that differ only in case.  Although the reference
96*0a6a1f1dSLionel Sambuc		implementation is case-sensitive, some other implementations
97*0a6a1f1dSLionel Sambuc		are not, and they would mishandle names differing only in case.
98*0a6a1f1dSLionel Sambuc	If one name A is an initial prefix of another name AB (ignoring case),
99*0a6a1f1dSLionel Sambuc		then B must not start with '/', as a regular file cannot have
100*0a6a1f1dSLionel Sambuc		the same name as a directory in POSIX.  For example,
101*0a6a1f1dSLionel Sambuc		'America/New_York' precludes 'America/New_York/Bronx'.
102*0a6a1f1dSLionel Sambuc	Uninhabited regions like the North Pole and Bouvet Island
103*0a6a1f1dSLionel Sambuc		do not need locations, since local time is not defined there.
104*0a6a1f1dSLionel Sambuc	There should typically be at least one name for each ISO 3166-1
105*0a6a1f1dSLionel Sambuc		officially assigned two-letter code for an inhabited country
106*0a6a1f1dSLionel Sambuc		or territory.
107*0a6a1f1dSLionel Sambuc	If all the clocks in a region have agreed since 1970,
108*0a6a1f1dSLionel Sambuc		don't bother to include more than one location
109*0a6a1f1dSLionel Sambuc		even if subregions' clocks disagreed before 1970.
110*0a6a1f1dSLionel Sambuc		Otherwise these tables would become annoyingly large.
111*0a6a1f1dSLionel Sambuc	If a name is ambiguous, use a less ambiguous alternative;
112*0a6a1f1dSLionel Sambuc		e.g. many cities are named San José and Georgetown, so
113*0a6a1f1dSLionel Sambuc		prefer 'Costa_Rica' to 'San_Jose' and 'Guyana' to 'Georgetown'.
114*0a6a1f1dSLionel Sambuc	Keep locations compact.  Use cities or small islands, not countries
115*0a6a1f1dSLionel Sambuc		or regions, so that any future time zone changes do not split
116*0a6a1f1dSLionel Sambuc		locations into different time zones.  E.g. prefer 'Paris'
117*0a6a1f1dSLionel Sambuc		to 'France', since France has had multiple time zones.
118*0a6a1f1dSLionel Sambuc	Use mainstream English spelling, e.g. prefer 'Rome' to 'Roma', and
119*0a6a1f1dSLionel Sambuc		prefer 'Athens' to the Greek 'Αθήνα' or the Romanized 'Athína'.
120*0a6a1f1dSLionel Sambuc		The POSIX file name restrictions encourage this rule.
121*0a6a1f1dSLionel Sambuc	Use the most populous among locations in a zone,
122*0a6a1f1dSLionel Sambuc		e.g. prefer 'Shanghai' to 'Beijing'.  Among locations with
123*0a6a1f1dSLionel Sambuc		similar populations, pick the best-known location,
124*0a6a1f1dSLionel Sambuc		e.g. prefer 'Rome' to 'Milan'.
125*0a6a1f1dSLionel Sambuc	Use the singular form, e.g. prefer 'Canary' to 'Canaries'.
126*0a6a1f1dSLionel Sambuc	Omit common suffixes like '_Islands' and '_City', unless that
127*0a6a1f1dSLionel Sambuc		would lead to ambiguity.  E.g. prefer 'Cayman' to
128*0a6a1f1dSLionel Sambuc		'Cayman_Islands' and 'Guatemala' to 'Guatemala_City',
129*0a6a1f1dSLionel Sambuc		but prefer 'Mexico_City' to 'Mexico' because the country
130*0a6a1f1dSLionel Sambuc		of Mexico has several time zones.
131*0a6a1f1dSLionel Sambuc	Use '_' to represent a space.
132*0a6a1f1dSLionel Sambuc	Omit '.' from abbreviations in names, e.g. prefer 'St_Helena'
133*0a6a1f1dSLionel Sambuc		to 'St._Helena'.
134*0a6a1f1dSLionel Sambuc	Do not change established names if they only marginally
135*0a6a1f1dSLionel Sambuc		violate the above rules.  For example, don't change
136*0a6a1f1dSLionel Sambuc		the existing name 'Rome' to 'Milan' merely because
137*0a6a1f1dSLionel Sambuc		Milan's population has grown to be somewhat greater
138*0a6a1f1dSLionel Sambuc		than Rome's.
139*0a6a1f1dSLionel Sambuc	If a name is changed, put its old spelling in the 'backward' file.
140*0a6a1f1dSLionel Sambuc		This means old spellings will continue to work.
141*0a6a1f1dSLionel Sambuc
142*0a6a1f1dSLionel SambucThe file 'zone1970.tab' lists geographical locations used to name time
143*0a6a1f1dSLionel Sambuczone rules.  It is intended to be an exhaustive list of names for
144*0a6a1f1dSLionel Sambucgeographic regions as described above; this is a subset of the names
145*0a6a1f1dSLionel Sambucin the data.  Although a 'zone1970.tab' location's longitude
146*0a6a1f1dSLionel Sambuccorresponds to its LMT offset with one hour for every 15 degrees east
147*0a6a1f1dSLionel Sambuclongitude, this relationship is not exact.
148*0a6a1f1dSLionel Sambuc
149*0a6a1f1dSLionel SambucOlder versions of this package used a different naming scheme,
150*0a6a1f1dSLionel Sambucand these older names are still supported.
151*0a6a1f1dSLionel SambucSee the file 'backward' for most of these older names
152*0a6a1f1dSLionel Sambuc(e.g., 'US/Eastern' instead of 'America/New_York').
153*0a6a1f1dSLionel SambucThe other old-fashioned names still supported are
154*0a6a1f1dSLionel Sambuc'WET', 'CET', 'MET', and 'EET' (see the file 'europe').
155*0a6a1f1dSLionel Sambuc
156*0a6a1f1dSLionel SambucOlder versions of this package defined legacy names that are
157*0a6a1f1dSLionel Sambucincompatible with the first rule of location names, but which are
158*0a6a1f1dSLionel Sambucstill supported.  These legacy names are mostly defined in the file
159*0a6a1f1dSLionel Sambuc'etcetera'.  Also, the file 'backward' defines the legacy names
160*0a6a1f1dSLionel Sambuc'GMT0', 'GMT-0', 'GMT+0' and 'Canada/East-Saskatchewan', and the file
161*0a6a1f1dSLionel Sambuc'northamerica' defines the legacy names 'EST5EDT', 'CST6CDT',
162*0a6a1f1dSLionel Sambuc'MST7MDT', and 'PST8PDT'.
163*0a6a1f1dSLionel Sambuc
164*0a6a1f1dSLionel SambucExcluding 'backward' should not affect the other data.  If
165*0a6a1f1dSLionel Sambuc'backward' is excluded, excluding 'etcetera' should not affect the
166*0a6a1f1dSLionel Sambucremaining data.
167*0a6a1f1dSLionel Sambuc
168*0a6a1f1dSLionel Sambuc
169*0a6a1f1dSLionel Sambuc----- Time zone abbreviations -----
170*0a6a1f1dSLionel Sambuc
171*0a6a1f1dSLionel SambucWhen this package is installed, it generates time zone abbreviations
172*0a6a1f1dSLionel Sambuclike 'EST' to be compatible with human tradition and POSIX.
173*0a6a1f1dSLionel SambucHere are the general rules used for choosing time zone abbreviations,
174*0a6a1f1dSLionel Sambucin decreasing order of importance:
175*0a6a1f1dSLionel Sambuc
176*0a6a1f1dSLionel Sambuc	Use abbreviations that consist of three or more ASCII letters.
177*0a6a1f1dSLionel Sambuc		Previous editions of this database also used characters like
178*0a6a1f1dSLionel Sambuc		' ' and '?', but these characters have a special meaning to
179*0a6a1f1dSLionel Sambuc		the shell and cause commands like
180*0a6a1f1dSLionel Sambuc			set `date`
181*0a6a1f1dSLionel Sambuc		to have unexpected effects.
182*0a6a1f1dSLionel Sambuc		Previous editions of this rule required upper-case letters,
183*0a6a1f1dSLionel Sambuc		but the Congressman who introduced Chamorro Standard Time
184*0a6a1f1dSLionel Sambuc		preferred "ChST", so the rule has been relaxed.
185*0a6a1f1dSLionel Sambuc
186*0a6a1f1dSLionel Sambuc		This rule guarantees that all abbreviations could have
187*0a6a1f1dSLionel Sambuc		been specified by a POSIX TZ string.  POSIX
188*0a6a1f1dSLionel Sambuc		requires at least three characters for an
189*0a6a1f1dSLionel Sambuc		abbreviation.  POSIX through 2000 says that an abbreviation
190*0a6a1f1dSLionel Sambuc		cannot start with ':', and cannot contain ',', '-',
191*0a6a1f1dSLionel Sambuc		'+', NUL, or a digit.  POSIX from 2001 on changes this
192*0a6a1f1dSLionel Sambuc		rule to say that an abbreviation can contain only '-', '+',
193*0a6a1f1dSLionel Sambuc		and alphanumeric characters from the portable character set
194*0a6a1f1dSLionel Sambuc		in the current locale.  To be portable to both sets of
195*0a6a1f1dSLionel Sambuc		rules, an abbreviation must therefore use only ASCII
196*0a6a1f1dSLionel Sambuc		letters.
197*0a6a1f1dSLionel Sambuc
198*0a6a1f1dSLionel Sambuc	Use abbreviations that are in common use among English-speakers,
199*0a6a1f1dSLionel Sambuc		e.g. 'EST' for Eastern Standard Time in North America.
200*0a6a1f1dSLionel Sambuc		We assume that applications translate them to other languages
201*0a6a1f1dSLionel Sambuc		as part of the normal localization process; for example,
202*0a6a1f1dSLionel Sambuc		a French application might translate 'EST' to 'HNE'.
203*0a6a1f1dSLionel Sambuc
204*0a6a1f1dSLionel Sambuc	For zones whose times are taken from a city's longitude, use the
205*0a6a1f1dSLionel Sambuc		traditional xMT notation, e.g. 'PMT' for Paris Mean Time.
206*0a6a1f1dSLionel Sambuc		The only name like this in current use is 'GMT'.
207*0a6a1f1dSLionel Sambuc
208*0a6a1f1dSLionel Sambuc	Use 'LMT' for local mean time of locations before the introduction
209*0a6a1f1dSLionel Sambuc		of standard time; see "Scope of the tz database".
210*0a6a1f1dSLionel Sambuc
211*0a6a1f1dSLionel Sambuc	If there is no common English abbreviation, use numeric offsets like
212*0a6a1f1dSLionel Sambuc		-05 and +0830 that are generated by zic's %z notation.
213*0a6a1f1dSLionel Sambuc
214*0a6a1f1dSLionel Sambuc    [The remaining guidelines predate the introduction of %z.
215*0a6a1f1dSLionel Sambuc    They are problematic as they mean tz data entries invent
216*0a6a1f1dSLionel Sambuc    notation rather than record it.  These guidelines are now
217*0a6a1f1dSLionel Sambuc    deprecated and the plan is to gradually move to %z for
218*0a6a1f1dSLionel Sambuc    inhabited locations and to "-00" for uninhabited locations.]
219*0a6a1f1dSLionel Sambuc
220*0a6a1f1dSLionel Sambuc	If there is no common English abbreviation, abbreviate the English
221*0a6a1f1dSLionel Sambuc		translation of the usual phrase used by native speakers.
222*0a6a1f1dSLionel Sambuc		If this is not available or is a phrase mentioning the country
223*0a6a1f1dSLionel Sambuc		(e.g. "Cape Verde Time"), then:
224*0a6a1f1dSLionel Sambuc
225*0a6a1f1dSLionel Sambuc		When a country is identified with a single or principal zone,
226*0a6a1f1dSLionel Sambuc			append 'T' to the country's ISO	code, e.g. 'CVT' for
227*0a6a1f1dSLionel Sambuc			Cape Verde Time.  For summer time append 'ST';
228*0a6a1f1dSLionel Sambuc			for double summer time append 'DST'; etc.
229*0a6a1f1dSLionel Sambuc		Otherwise, take the first three letters of an English place
230*0a6a1f1dSLionel Sambuc			name identifying each zone and append 'T', 'ST', etc.
231*0a6a1f1dSLionel Sambuc			as before; e.g. 'VLAST' for VLAdivostok Summer Time.
232*0a6a1f1dSLionel Sambuc
233*0a6a1f1dSLionel Sambuc	Use UT (with time zone abbreviation 'zzz') for locations while
234*0a6a1f1dSLionel Sambuc		uninhabited.  The 'zzz' mnemonic is that these locations are,
235*0a6a1f1dSLionel Sambuc		in some sense, asleep.
236*0a6a1f1dSLionel Sambuc
237*0a6a1f1dSLionel SambucApplication writers should note that these abbreviations are ambiguous
238*0a6a1f1dSLionel Sambucin practice: e.g. 'CST' has a different meaning in China than
239*0a6a1f1dSLionel Sambucit does in the United States.  In new applications, it's often better
240*0a6a1f1dSLionel Sambucto use numeric UT offsets like '-0600' instead of time zone
241*0a6a1f1dSLionel Sambucabbreviations like 'CST'; this avoids the ambiguity.
242*0a6a1f1dSLionel Sambuc
243*0a6a1f1dSLionel Sambuc
244*0a6a1f1dSLionel Sambuc----- Accuracy of the tz database -----
245*0a6a1f1dSLionel Sambuc
246*0a6a1f1dSLionel SambucThe tz database is not authoritative, and it surely has errors.
247*0a6a1f1dSLionel SambucCorrections are welcome and encouraged; see the file CONTRIBUTING.
248*0a6a1f1dSLionel SambucUsers requiring authoritative data should consult national standards
249*0a6a1f1dSLionel Sambucbodies and the references cited in the database's comments.
250*0a6a1f1dSLionel Sambuc
251*0a6a1f1dSLionel SambucErrors in the tz database arise from many sources:
252*0a6a1f1dSLionel Sambuc
253*0a6a1f1dSLionel Sambuc * The tz database predicts future time stamps, and current predictions
254*0a6a1f1dSLionel Sambuc   will be incorrect after future governments change the rules.
255*0a6a1f1dSLionel Sambuc   For example, if today someone schedules a meeting for 13:00 next
256*0a6a1f1dSLionel Sambuc   October 1, Casablanca time, and tomorrow Morocco changes its
257*0a6a1f1dSLionel Sambuc   daylight saving rules, software can mess up after the rule change
258*0a6a1f1dSLionel Sambuc   if it blithely relies on conversions made before the change.
259*0a6a1f1dSLionel Sambuc
260*0a6a1f1dSLionel Sambuc * The pre-1970 entries in this database cover only a tiny sliver of how
261*0a6a1f1dSLionel Sambuc   clocks actually behaved; the vast majority of the necessary
262*0a6a1f1dSLionel Sambuc   information was lost or never recorded.  Thousands more zones would
263*0a6a1f1dSLionel Sambuc   be needed if the tz database's scope were extended to cover even
264*0a6a1f1dSLionel Sambuc   just the known or guessed history of standard time; for example,
265*0a6a1f1dSLionel Sambuc   the current single entry for France would need to split into dozens
266*0a6a1f1dSLionel Sambuc   of entries, perhaps hundreds.
267*0a6a1f1dSLionel Sambuc
268*0a6a1f1dSLionel Sambuc * Most of the pre-1970 data entries come from unreliable sources, often
269*0a6a1f1dSLionel Sambuc   astrology books that lack citations and whose compilers evidently
270*0a6a1f1dSLionel Sambuc   invented entries when the true facts were unknown, without
271*0a6a1f1dSLionel Sambuc   reporting which entries were known and which were invented.
272*0a6a1f1dSLionel Sambuc   These books often contradict each other or give implausible entries,
273*0a6a1f1dSLionel Sambuc   and on the rare occasions when they are checked they are
274*0a6a1f1dSLionel Sambuc   typically found to be incorrect.
275*0a6a1f1dSLionel Sambuc
276*0a6a1f1dSLionel Sambuc * For the UK the tz database relies on years of first-class work done by
277*0a6a1f1dSLionel Sambuc   Joseph Myers and others; see <http://www.polyomino.org.uk/british-time/>.
278*0a6a1f1dSLionel Sambuc   Other countries are not done nearly as well.
279*0a6a1f1dSLionel Sambuc
280*0a6a1f1dSLionel Sambuc * Sometimes, different people in the same city would maintain clocks
281*0a6a1f1dSLionel Sambuc   that differed significantly.  Railway time was used by railroad
282*0a6a1f1dSLionel Sambuc   companies (which did not always agree with each other),
283*0a6a1f1dSLionel Sambuc   church-clock time was used for birth certificates, etc.
284*0a6a1f1dSLionel Sambuc   Often this was merely common practice, but sometimes it was set by law.
285*0a6a1f1dSLionel Sambuc   For example, from 1891 to 1911 the UT offset in France was legally
286*0a6a1f1dSLionel Sambuc   0:09:21 outside train stations and 0:04:21 inside.
287*0a6a1f1dSLionel Sambuc
288*0a6a1f1dSLionel Sambuc * Although a named location in the tz database stands for the
289*0a6a1f1dSLionel Sambuc   containing region, its pre-1970 data entries are often accurate for
290*0a6a1f1dSLionel Sambuc   only a small subset of that region.  For example, Europe/London
291*0a6a1f1dSLionel Sambuc   stands for the United Kingdom, but its pre-1847 times are valid
292*0a6a1f1dSLionel Sambuc   only for locations that have London's exact meridian, and its 1847
293*0a6a1f1dSLionel Sambuc   transition to GMT is known to be valid only for the L&NW and the
294*0a6a1f1dSLionel Sambuc   Caledonian railways.
295*0a6a1f1dSLionel Sambuc
296*0a6a1f1dSLionel Sambuc * The tz database does not record the earliest time for which a zone's
297*0a6a1f1dSLionel Sambuc   data entries are thereafter valid for every location in the region.
298*0a6a1f1dSLionel Sambuc   For example, Europe/London is valid for all locations in its
299*0a6a1f1dSLionel Sambuc   region after GMT was made the standard time, but the date of
300*0a6a1f1dSLionel Sambuc   standardization (1880-08-02) is not in the tz database, other than
301*0a6a1f1dSLionel Sambuc   in commentary.  For many zones the earliest time of validity is
302*0a6a1f1dSLionel Sambuc   unknown.
303*0a6a1f1dSLionel Sambuc
304*0a6a1f1dSLionel Sambuc * The tz database does not record a region's boundaries, and in many
305*0a6a1f1dSLionel Sambuc   cases the boundaries are not known.  For example, the zone
306*0a6a1f1dSLionel Sambuc   America/Kentucky/Louisville represents a region around the city of
307*0a6a1f1dSLionel Sambuc   Louisville, the boundaries of which are unclear.
308*0a6a1f1dSLionel Sambuc
309*0a6a1f1dSLionel Sambuc * Changes that are modeled as instantaneous transitions in the tz
310*0a6a1f1dSLionel Sambuc   database were often spread out over hours, days, or even decades.
311*0a6a1f1dSLionel Sambuc
312*0a6a1f1dSLionel Sambuc * Even if the time is specified by law, locations sometimes
313*0a6a1f1dSLionel Sambuc   deliberately flout the law.
314*0a6a1f1dSLionel Sambuc
315*0a6a1f1dSLionel Sambuc * Early timekeeping practices, even assuming perfect clocks, were
316*0a6a1f1dSLionel Sambuc   often not specified to the accuracy that the tz database requires.
317*0a6a1f1dSLionel Sambuc
318*0a6a1f1dSLionel Sambuc * Sometimes historical timekeeping was specified more precisely
319*0a6a1f1dSLionel Sambuc   than what the tz database can handle.  For example, from 1909 to
320*0a6a1f1dSLionel Sambuc   1937 Netherlands clocks were legally UT+00:19:32.13, but the tz
321*0a6a1f1dSLionel Sambuc   database cannot represent the fractional second.
322*0a6a1f1dSLionel Sambuc
323*0a6a1f1dSLionel Sambuc * Even when all the timestamp transitions recorded by the tz database
324*0a6a1f1dSLionel Sambuc   are correct, the tz rules that generate them may not faithfully
325*0a6a1f1dSLionel Sambuc   reflect the historical rules.  For example, from 1922 until World
326*0a6a1f1dSLionel Sambuc   War II the UK moved clocks forward the day following the third
327*0a6a1f1dSLionel Sambuc   Saturday in April unless that was Easter, in which case it moved
328*0a6a1f1dSLionel Sambuc   clocks forward the previous Sunday.  Because the tz database has no
329*0a6a1f1dSLionel Sambuc   way to specify Easter, these exceptional years are entered as
330*0a6a1f1dSLionel Sambuc   separate tz Rule lines, even though the legal rules did not change.
331*0a6a1f1dSLionel Sambuc
332*0a6a1f1dSLionel Sambuc * The tz database models pre-standard time using the proleptic Gregorian
333*0a6a1f1dSLionel Sambuc   calendar and local mean time (LMT), but many people used other
334*0a6a1f1dSLionel Sambuc   calendars and other timescales.  For example, the Roman Empire used
335*0a6a1f1dSLionel Sambuc   the Julian calendar, and had 12 varying-length daytime hours with a
336*0a6a1f1dSLionel Sambuc   non-hour-based system at night.
337*0a6a1f1dSLionel Sambuc
338*0a6a1f1dSLionel Sambuc * Early clocks were less reliable, and data entries do not represent
339*0a6a1f1dSLionel Sambuc   this unreliability.
340*0a6a1f1dSLionel Sambuc
341*0a6a1f1dSLionel Sambuc * As for leap seconds, civil time was not based on atomic time before
342*0a6a1f1dSLionel Sambuc   1972, and we don't know the history of earth's rotation accurately
343*0a6a1f1dSLionel Sambuc   enough to map SI seconds to historical solar time to more than
344*0a6a1f1dSLionel Sambuc   about one-hour accuracy.  See: Morrison LV, Stephenson FR.
345*0a6a1f1dSLionel Sambuc   Historical values of the Earth's clock error Delta T and the
346*0a6a1f1dSLionel Sambuc   calculation of eclipses. J Hist Astron. 2004;35:327-36
347*0a6a1f1dSLionel Sambuc   <http://adsabs.harvard.edu/full/2004JHA....35..327M>;
348*0a6a1f1dSLionel Sambuc   Historical values of the Earth's clock error. J Hist Astron. 2005;36:339
349*0a6a1f1dSLionel Sambuc   <http://adsabs.harvard.edu/full/2005JHA....36..339M>.
350*0a6a1f1dSLionel Sambuc
351*0a6a1f1dSLionel Sambuc * The relationship between POSIX time (that is, UTC but ignoring leap
352*0a6a1f1dSLionel Sambuc   seconds) and UTC is not agreed upon after 1972.  Although the POSIX
353*0a6a1f1dSLionel Sambuc   clock officially stops during an inserted leap second, at least one
354*0a6a1f1dSLionel Sambuc   proposed standard has it jumping back a second instead; and in
355*0a6a1f1dSLionel Sambuc   practice POSIX clocks more typically either progress glacially during
356*0a6a1f1dSLionel Sambuc   a leap second, or are slightly slowed while near a leap second.
357*0a6a1f1dSLionel Sambuc
358*0a6a1f1dSLionel Sambuc * The tz database does not represent how uncertain its information is.
359*0a6a1f1dSLionel Sambuc   Ideally it would contain information about when data entries are
360*0a6a1f1dSLionel Sambuc   incomplete or dicey.  Partial temporal knowledge is a field of
361*0a6a1f1dSLionel Sambuc   active research, though, and it's not clear how to apply it here.
362*0a6a1f1dSLionel Sambuc
363*0a6a1f1dSLionel SambucIn short, many, perhaps most, of the tz database's pre-1970 and future
364*0a6a1f1dSLionel Sambuctime stamps are either wrong or misleading.  Any attempt to pass the
365*0a6a1f1dSLionel Sambuctz database off as the definition of time should be unacceptable to
366*0a6a1f1dSLionel Sambucanybody who cares about the facts.  In particular, the tz database's
367*0a6a1f1dSLionel SambucLMT offsets should not be considered meaningful, and should not prompt
368*0a6a1f1dSLionel Sambuccreation of zones merely because two locations differ in LMT or
369*0a6a1f1dSLionel Sambuctransitioned to standard time at different dates.
370*0a6a1f1dSLionel Sambuc
371*0a6a1f1dSLionel Sambuc
372*0a6a1f1dSLionel Sambuc----- Time and date functions -----
373*0a6a1f1dSLionel Sambuc
374*0a6a1f1dSLionel SambucThe tz code contains time and date functions that are upwards
375*0a6a1f1dSLionel Sambuccompatible with those of POSIX.
376*0a6a1f1dSLionel Sambuc
3772fe8fb19SBen GrasPOSIX has the following properties and limitations.
3782fe8fb19SBen Gras
3792fe8fb19SBen Gras*	In POSIX, time display in a process is controlled by the
3802fe8fb19SBen Gras	environment variable TZ.  Unfortunately, the POSIX TZ string takes
3812fe8fb19SBen Gras	a form that is hard to describe and is error-prone in practice.
3822fe8fb19SBen Gras	Also, POSIX TZ strings can't deal with other (for example, Israeli)
3832fe8fb19SBen Gras	daylight saving time rules, or situations where more than two
3842fe8fb19SBen Gras	time zone abbreviations are used in an area.
3852fe8fb19SBen Gras
3862fe8fb19SBen Gras	The POSIX TZ string takes the following form:
3872fe8fb19SBen Gras
38884d9c625SLionel Sambuc		stdoffset[dst[offset][,date[/time],date[/time]]]
3892fe8fb19SBen Gras
3902fe8fb19SBen Gras	where:
3912fe8fb19SBen Gras
3922fe8fb19SBen Gras	std and dst
3932fe8fb19SBen Gras		are 3 or more characters specifying the standard
3942fe8fb19SBen Gras		and daylight saving time (DST) zone names.
3952fe8fb19SBen Gras		Starting with POSIX.1-2001, std and dst may also be
3962fe8fb19SBen Gras		in a quoted form like "<UTC+10>"; this allows
3972fe8fb19SBen Gras		"+" and "-" in the names.
3982fe8fb19SBen Gras	offset
39984d9c625SLionel Sambuc		is of the form '[+-]hh:[mm[:ss]]' and specifies the
40084d9c625SLionel Sambuc		offset west of UT.  'hh' may be a single digit; 0<=hh<=24.
40184d9c625SLionel Sambuc		The default DST offset is one hour ahead of standard time.
4022fe8fb19SBen Gras	date[/time],date[/time]
4032fe8fb19SBen Gras		specifies the beginning and end of DST.  If this is absent,
4042fe8fb19SBen Gras		the system supplies its own rules for DST, and these can
4052fe8fb19SBen Gras		differ from year to year; typically US DST rules are used.
4062fe8fb19SBen Gras	time
40784d9c625SLionel Sambuc		takes the form 'hh:[mm[:ss]]' and defaults to 02:00.
40884d9c625SLionel Sambuc		This is the same format as the offset, except that a
40984d9c625SLionel Sambuc		leading '+' or '-' is not allowed.
4102fe8fb19SBen Gras	date
4112fe8fb19SBen Gras		takes one of the following forms:
4122fe8fb19SBen Gras		Jn (1<=n<=365)
4132fe8fb19SBen Gras			origin-1 day number not counting February 29
4142fe8fb19SBen Gras		n (0<=n<=365)
4152fe8fb19SBen Gras			origin-0 day number counting February 29 if present
4162fe8fb19SBen Gras		Mm.n.d (0[Sunday]<=d<=6[Saturday], 1<=n<=5, 1<=m<=12)
4172fe8fb19SBen Gras			for the dth day of week n of month m of the year,
4182fe8fb19SBen Gras			where week 1 is the first week in which day d appears,
41984d9c625SLionel Sambuc			and '5' stands for the last week in which day d appears
4202fe8fb19SBen Gras			(which may be either the 4th or 5th week).
42184d9c625SLionel Sambuc			Typically, this is the only useful form;
42284d9c625SLionel Sambuc			the n and Jn forms are rarely used.
4232fe8fb19SBen Gras
4242fe8fb19SBen Gras	Here is an example POSIX TZ string, for US Pacific time using rules
4252fe8fb19SBen Gras	appropriate from 1987 through 2006:
4262fe8fb19SBen Gras
4272fe8fb19SBen Gras		TZ='PST8PDT,M4.1.0/02:00,M10.5.0/02:00'
4282fe8fb19SBen Gras
4292fe8fb19SBen Gras	This POSIX TZ string is hard to remember, and mishandles time stamps
4302fe8fb19SBen Gras	before 1987 and after 2006.  With this package you can use this
4312fe8fb19SBen Gras	instead:
4322fe8fb19SBen Gras
4332fe8fb19SBen Gras		TZ='America/Los_Angeles'
4342fe8fb19SBen Gras
4352fe8fb19SBen Gras*	POSIX does not define the exact meaning of TZ values like "EST5EDT".
4362fe8fb19SBen Gras	Typically the current US DST rules are used to interpret such values,
4372fe8fb19SBen Gras	but this means that the US DST rules are compiled into each program
4382fe8fb19SBen Gras	that does time conversion.  This means that when US time conversion
4392fe8fb19SBen Gras	rules change (as in the United States in 1987), all programs that
4402fe8fb19SBen Gras	do time conversion must be recompiled to ensure proper results.
4412fe8fb19SBen Gras
4422fe8fb19SBen Gras*	In POSIX, there's no tamper-proof way for a process to learn the
4432fe8fb19SBen Gras	system's best idea of local wall clock.  (This is important for
444*0a6a1f1dSLionel Sambuc	applications that an administrator wants used only at certain times -
4452fe8fb19SBen Gras	without regard to whether the user has fiddled the "TZ" environment
4462fe8fb19SBen Gras	variable.  While an administrator can "do everything in UTC" to get
4472fe8fb19SBen Gras	around the problem, doing so is inconvenient and precludes handling
448*0a6a1f1dSLionel Sambuc	daylight saving time shifts - as might be required to limit phone
4492fe8fb19SBen Gras	calls to off-peak hours.)
4502fe8fb19SBen Gras
4512fe8fb19SBen Gras*	POSIX requires that systems ignore leap seconds.
4522fe8fb19SBen Gras
453*0a6a1f1dSLionel Sambuc*	The tz code attempts to support all the time_t implementations
45484d9c625SLionel Sambuc	allowed by POSIX.  The time_t type represents a nonnegative count of
45584d9c625SLionel Sambuc	seconds since 1970-01-01 00:00:00 UTC, ignoring leap seconds.
45684d9c625SLionel Sambuc	In practice, time_t is usually a signed 64- or 32-bit integer; 32-bit
45784d9c625SLionel Sambuc	signed time_t values stop working after 2038-01-19 03:14:07 UTC, so
45884d9c625SLionel Sambuc	new implementations these days typically use a signed 64-bit integer.
45984d9c625SLionel Sambuc	Unsigned 32-bit integers are used on one or two platforms,
460*0a6a1f1dSLionel Sambuc	and 36-bit and 40-bit integers are also used occasionally.
46184d9c625SLionel Sambuc	Although earlier POSIX versions allowed time_t to be a
46284d9c625SLionel Sambuc	floating-point type, this was not supported by any practical
46384d9c625SLionel Sambuc	systems, and POSIX.1-2013 and the tz code both require time_t
46484d9c625SLionel Sambuc	to be an integer type.
46584d9c625SLionel Sambuc
4662fe8fb19SBen GrasThese are the extensions that have been made to the POSIX functions:
4672fe8fb19SBen Gras
4682fe8fb19SBen Gras*	The "TZ" environment variable is used in generating the name of a file
4692fe8fb19SBen Gras	from which time zone information is read (or is interpreted a la
4702fe8fb19SBen Gras	POSIX); "TZ" is no longer constrained to be a three-letter time zone
4712fe8fb19SBen Gras	name followed by a number of hours and an optional three-letter
4722fe8fb19SBen Gras	daylight time zone name.  The daylight saving time rules to be used
4732fe8fb19SBen Gras	for a particular time zone are encoded in the time zone file;
4742fe8fb19SBen Gras	the format of the file allows U.S., Australian, and other rules to be
4752fe8fb19SBen Gras	encoded, and allows for situations where more than two time zone
4762fe8fb19SBen Gras	abbreviations are used.
4772fe8fb19SBen Gras
4782fe8fb19SBen Gras	It was recognized that allowing the "TZ" environment variable to
4792fe8fb19SBen Gras	take on values such as "America/New_York" might cause "old" programs
4802fe8fb19SBen Gras	(that expect "TZ" to have a certain form) to operate incorrectly;
4812fe8fb19SBen Gras	consideration was given to using some other environment variable
4822fe8fb19SBen Gras	(for example, "TIMEZONE") to hold the string used to generate the
4832fe8fb19SBen Gras	time zone information file name.  In the end, however, it was decided
4842fe8fb19SBen Gras	to continue using "TZ": it is widely used for time zone purposes;
4852fe8fb19SBen Gras	separately maintaining both "TZ" and "TIMEZONE" seemed a nuisance;
4862fe8fb19SBen Gras	and systems where "new" forms of "TZ" might cause problems can simply
4872fe8fb19SBen Gras	use TZ values such as "EST5EDT" which can be used both by
4882fe8fb19SBen Gras	"new" programs (a la POSIX) and "old" programs (as zone names and
4892fe8fb19SBen Gras	offsets).
4902fe8fb19SBen Gras
4912fe8fb19SBen Gras*	To handle places where more than two time zone abbreviations are used,
4922fe8fb19SBen Gras	the functions "localtime" and "gmtime" set tzname[tmp->tm_isdst]
4932fe8fb19SBen Gras	(where "tmp" is the value the function returns) to the time zone
4942fe8fb19SBen Gras	abbreviation to be used.  This differs from POSIX, where the elements
4952fe8fb19SBen Gras	of tzname are only changed as a result of calls to tzset.
4962fe8fb19SBen Gras
4972fe8fb19SBen Gras*	Since the "TZ" environment variable can now be used to control time
4982fe8fb19SBen Gras	conversion, the "daylight" and "timezone" variables are no longer
4992fe8fb19SBen Gras	needed.  (These variables are defined and set by "tzset"; however, their
5002fe8fb19SBen Gras	values will not be used by "localtime.")
5012fe8fb19SBen Gras
5022fe8fb19SBen Gras*	The "localtime" function has been set up to deliver correct results
5032fe8fb19SBen Gras	for near-minimum or near-maximum time_t values.  (A comment in the
5042fe8fb19SBen Gras	source code tells how to get compatibly wrong results).
5052fe8fb19SBen Gras
5062fe8fb19SBen Gras*	A function "tzsetwall" has been added to arrange for the system's
5072fe8fb19SBen Gras	best approximation to local wall clock time to be delivered by
5082fe8fb19SBen Gras	subsequent calls to "localtime."  Source code for portable
5092fe8fb19SBen Gras	applications that "must" run on local wall clock time should call
5102fe8fb19SBen Gras	"tzsetwall();" if such code is moved to "old" systems that don't
5112fe8fb19SBen Gras	provide tzsetwall, you won't be able to generate an executable program.
5122fe8fb19SBen Gras	(These time zone functions also arrange for local wall clock time to be
513*0a6a1f1dSLionel Sambuc	used if tzset is called - directly or indirectly - and there's no "TZ"
5142fe8fb19SBen Gras	environment variable; portable applications should not, however, rely
5152fe8fb19SBen Gras	on this behavior since it's not the way SVR2 systems behave.)
5162fe8fb19SBen Gras
51784d9c625SLionel Sambuc*	Negative time_t values are supported, on systems where time_t is signed.
51884d9c625SLionel Sambuc
5192fe8fb19SBen Gras*	These functions can account for leap seconds, thanks to Bradley White.
5202fe8fb19SBen Gras
5212fe8fb19SBen GrasPoints of interest to folks with other systems:
5222fe8fb19SBen Gras
5232fe8fb19SBen Gras*	This package is already part of many POSIX-compliant hosts,
5242fe8fb19SBen Gras	including BSD, HP, Linux, Network Appliance, SCO, SGI, and Sun.
5252fe8fb19SBen Gras	On such hosts, the primary use of this package
5262fe8fb19SBen Gras	is to update obsolete time zone rule tables.
5272fe8fb19SBen Gras	To do this, you may need to compile the time zone compiler
52884d9c625SLionel Sambuc	'zic' supplied with this package instead of using the system 'zic',
5292fe8fb19SBen Gras	since the format of zic's input changed slightly in late 1994,
5302fe8fb19SBen Gras	and many vendors still do not support the new input format.
5312fe8fb19SBen Gras
5322fe8fb19SBen Gras*	The UNIX Version 7 "timezone" function is not present in this package;
5332fe8fb19SBen Gras	it's impossible to reliably map timezone's arguments (a "minutes west
5342fe8fb19SBen Gras	of GMT" value and a "daylight saving time in effect" flag) to a
5352fe8fb19SBen Gras	time zone abbreviation, and we refuse to guess.
5362fe8fb19SBen Gras	Programs that in the past used the timezone function may now examine
5372fe8fb19SBen Gras	tzname[localtime(&clock)->tm_isdst] to learn the correct time
5382fe8fb19SBen Gras	zone abbreviation to use.  Alternatively, use
5392fe8fb19SBen Gras	localtime(&clock)->tm_zone if this has been enabled.
5402fe8fb19SBen Gras
5412fe8fb19SBen Gras*	The 4.2BSD gettimeofday function is not used in this package.
5422fe8fb19SBen Gras	This formerly let users obtain the current UTC offset and DST flag,
5432fe8fb19SBen Gras	but this functionality was removed in later versions of BSD.
5442fe8fb19SBen Gras
5452fe8fb19SBen Gras*	In SVR2, time conversion fails for near-minimum or near-maximum
54684d9c625SLionel Sambuc	time_t values when doing conversions for places that don't use UT.
5472fe8fb19SBen Gras	This package takes care to do these conversions correctly.
5482fe8fb19SBen Gras
5492fe8fb19SBen GrasThe functions that are conditionally compiled if STD_INSPIRED is defined
5502fe8fb19SBen Grasshould, at this point, be looked on primarily as food for thought.  They are
551*0a6a1f1dSLionel Sambucnot in any sense "standard compatible" - some are not, in fact, specified in
5522fe8fb19SBen Gras*any* standard.  They do, however, represent responses of various authors to
5532fe8fb19SBen Grasstandardization proposals.
5542fe8fb19SBen Gras
5552fe8fb19SBen GrasOther time conversion proposals, in particular the one developed by folks at
5562fe8fb19SBen GrasHewlett Packard, offer a wider selection of functions that provide capabilities
5572fe8fb19SBen Grasbeyond those provided here.  The absence of such functions from this package
5582fe8fb19SBen Grasis not meant to discourage the development, standardization, or use of such
5592fe8fb19SBen Grasfunctions.  Rather, their absence reflects the decision to make this package
5602fe8fb19SBen Grascontain valid extensions to POSIX, to ensure its broad acceptability.  If
5612fe8fb19SBen Grasmore powerful time conversion functions can be standardized, so much the
5622fe8fb19SBen Grasbetter.
5632fe8fb19SBen Gras
5642fe8fb19SBen Gras
5652fe8fb19SBen Gras----- Calendrical issues -----
5662fe8fb19SBen Gras
5672fe8fb19SBen GrasCalendrical issues are a bit out of scope for a time zone database,
5682fe8fb19SBen Grasbut they indicate the sort of problems that we would run into if we
5692fe8fb19SBen Grasextended the time zone database further into the past.  An excellent
570f14fb602SLionel Sambucresource in this area is Nachum Dershowitz and Edward M. Reingold,
571*0a6a1f1dSLionel SambucCalendrical Calculations: Third Edition, Cambridge University Press (2008)
572*0a6a1f1dSLionel Sambuc<http://emr.cs.iit.edu/home/reingold/calendar-book/third-edition/>.
573*0a6a1f1dSLionel SambucOther information and sources are given below.  They sometimes disagree.
5742fe8fb19SBen Gras
5752fe8fb19SBen Gras
5762fe8fb19SBen GrasFrance
5772fe8fb19SBen Gras
5782fe8fb19SBen GrasGregorian calendar adopted 1582-12-20.
5792fe8fb19SBen GrasFrench Revolutionary calendar used 1793-11-24 through 1805-12-31,
5802fe8fb19SBen Grasand (in Paris only) 1871-05-06 through 1871-05-23.
5812fe8fb19SBen Gras
5822fe8fb19SBen Gras
5832fe8fb19SBen GrasRussia
5842fe8fb19SBen Gras
5852fe8fb19SBen GrasFrom Chris Carrier (1996-12-02):
58684d9c625SLionel SambucOn 1929-10-01 the Soviet Union instituted an "Eternal Calendar"
5872fe8fb19SBen Graswith 30-day months plus 5 holidays, with a 5-day week.
5882fe8fb19SBen GrasOn 1931-12-01 it changed to a 6-day week; in 1934 it reverted to the
5892fe8fb19SBen GrasGregorian calendar while retaining the 6-day week; on 1940-06-27 it
5902fe8fb19SBen Grasreverted to the 7-day week.  With the 6-day week the usual days
5912fe8fb19SBen Grasoff were the 6th, 12th, 18th, 24th and 30th of the month.
5922fe8fb19SBen Gras(Source: Evitiar Zerubavel, _The Seven Day Circle_)
5932fe8fb19SBen Gras
5942fe8fb19SBen Gras
5952fe8fb19SBen GrasMark Brader reported a similar story in "The Book of Calendars", edited
5962fe8fb19SBen Grasby Frank Parise (1982, Facts on File, ISBN 0-8719-6467-8), page 377.  But:
5972fe8fb19SBen Gras
5982fe8fb19SBen GrasFrom: Petteri Sulonen (via Usenet)
5992fe8fb19SBen GrasDate: 14 Jan 1999 00:00:00 GMT
6002fe8fb19SBen Gras...
6012fe8fb19SBen Gras
602*0a6a1f1dSLionel SambucIf your source is correct, how come documents between 1929 and 1940 were
6032fe8fb19SBen Grasstill dated using the conventional, Gregorian calendar?
6042fe8fb19SBen Gras
6052fe8fb19SBen GrasI can post a scan of a document dated December 1, 1934, signed by
6062fe8fb19SBen GrasYenukidze, the secretary, on behalf of Kalinin, the President of the
6072fe8fb19SBen GrasExecutive Committee of the Supreme Soviet, if you like.
6082fe8fb19SBen Gras
6092fe8fb19SBen Gras
6102fe8fb19SBen Gras
6112fe8fb19SBen GrasSweden (and Finland)
6122fe8fb19SBen Gras
6132fe8fb19SBen GrasFrom: Mark Brader
614*0a6a1f1dSLionel SambucSubject: Re: Gregorian reform - a part of locale?
615*0a6a1f1dSLionel Sambuc<news:1996Jul6.012937.29190@sq.com>
6162fe8fb19SBen GrasDate: 1996-07-06
6172fe8fb19SBen Gras
6182fe8fb19SBen GrasIn 1700, Denmark made the transition from Julian to Gregorian.  Sweden
6192fe8fb19SBen Grasdecided to *start* a transition in 1700 as well, but rather than have one of
6202fe8fb19SBen Grasthose unsightly calendar gaps :-), they simply decreed that the next leap
621*0a6a1f1dSLionel Sambucyear after 1696 would be in 1744 - putting the whole country on a calendar
6222fe8fb19SBen Grasdifferent from both Julian and Gregorian for a period of 40 years.
6232fe8fb19SBen Gras
6242fe8fb19SBen GrasHowever, in 1704 something went wrong and the plan was not carried through;
6252fe8fb19SBen Grasthey did, after all, have a leap year that year.  And one in 1708.  In 1712
6262fe8fb19SBen Grasthey gave it up and went back to Julian, putting 30 days in February that
6272fe8fb19SBen Grasyear!...
6282fe8fb19SBen Gras
6292fe8fb19SBen GrasThen in 1753, Sweden made the transition to Gregorian in the usual manner,
6302fe8fb19SBen Grasgetting there only 13 years behind the original schedule.
6312fe8fb19SBen Gras
6322fe8fb19SBen Gras(A previous posting of this story was challenged, and Swedish readers
633*0a6a1f1dSLionel Sambucproduced the following references to support it: "Tideräkning och historia"
634*0a6a1f1dSLionel Sambucby Natanael Beckman (1924) and "Tid, en bok om tideräkning och
635*0a6a1f1dSLionel Sambuckalenderväsen" by Lars-Olof Lodén (1968).
6362fe8fb19SBen Gras
6372fe8fb19SBen Gras
6382fe8fb19SBen GrasGrotefend's data
6392fe8fb19SBen Gras
6402fe8fb19SBen GrasFrom: "Michael Palmer" [with one obvious typo fixed]
6412fe8fb19SBen GrasSubject: Re: Gregorian Calendar (was Re: Another FHC related question
6422fe8fb19SBen GrasNewsgroups: soc.genealogy.german
6432fe8fb19SBen GrasDate: Tue, 9 Feb 1999 02:32:48 -800
6442fe8fb19SBen Gras...
6452fe8fb19SBen Gras
6462fe8fb19SBen GrasThe following is a(n incomplete) listing, arranged chronologically, of
6472fe8fb19SBen GrasEuropean states, with the date they converted from the Julian to the
6482fe8fb19SBen GrasGregorian calendar:
6492fe8fb19SBen Gras
6502fe8fb19SBen Gras04/15 Oct 1582 - Italy (with exceptions), Spain, Portugal, Poland (Roman
6512fe8fb19SBen Gras                 Catholics and Danzig only)
6522fe8fb19SBen Gras09/20 Dec 1582 - France, Lorraine
6532fe8fb19SBen Gras
6542fe8fb19SBen Gras21 Dec 1582/
6552fe8fb19SBen Gras   01 Jan 1583 - Holland, Brabant, Flanders, Hennegau
656*0a6a1f1dSLionel Sambuc10/21 Feb 1583 - bishopric of Liege (Lüttich)
6572fe8fb19SBen Gras13/24 Feb 1583 - bishopric of Augsburg
6582fe8fb19SBen Gras04/15 Oct 1583 - electorate of Trier
6592fe8fb19SBen Gras05/16 Oct 1583 - Bavaria, bishoprics of Freising, Eichstedt, Regensburg,
6602fe8fb19SBen Gras                 Salzburg, Brixen
661*0a6a1f1dSLionel Sambuc13/24 Oct 1583 - Austrian Oberelsaß and Breisgau
6622fe8fb19SBen Gras20/31 Oct 1583 - bishopric of Basel
663*0a6a1f1dSLionel Sambuc02/13 Nov 1583 - duchy of Jülich-Berg
664*0a6a1f1dSLionel Sambuc02/13 Nov 1583 - electorate and city of Köln
665*0a6a1f1dSLionel Sambuc04/15 Nov 1583 - bishopric of Würzburg
6662fe8fb19SBen Gras11/22 Nov 1583 - electorate of Mainz
6672fe8fb19SBen Gras16/27 Nov 1583 - bishopric of Strassburg and the margraviate of Baden
668*0a6a1f1dSLionel Sambuc17/28 Nov 1583 - bishopric of Münster and duchy of Cleve
6692fe8fb19SBen Gras14/25 Dec 1583 - Steiermark
6702fe8fb19SBen Gras
6712fe8fb19SBen Gras06/17 Jan 1584 - Austria and Bohemia
672*0a6a1f1dSLionel Sambuc11/22 Jan 1584 - Lucerne, Uri, Schwyz, Zug, Freiburg, Solothurn
6732fe8fb19SBen Gras12/23 Jan 1584 - Silesia and the Lausitz
6742fe8fb19SBen Gras22 Jan/
6752fe8fb19SBen Gras   02 Feb 1584 - Hungary (legally on 21 Oct 1587)
6762fe8fb19SBen Gras      Jun 1584 - Unterwalden
6772fe8fb19SBen Gras01/12 Jul 1584 - duchy of Westfalen
6782fe8fb19SBen Gras
6792fe8fb19SBen Gras16/27 Jun 1585 - bishopric of Paderborn
6802fe8fb19SBen Gras
6812fe8fb19SBen Gras14/25 Dec 1590 - Transylvania
6822fe8fb19SBen Gras
6832fe8fb19SBen Gras22 Aug/
6842fe8fb19SBen Gras   02 Sep 1612 - duchy of Prussia
6852fe8fb19SBen Gras
6862fe8fb19SBen Gras13/24 Dec 1614 - Pfalz-Neuburg
6872fe8fb19SBen Gras
6882fe8fb19SBen Gras          1617 - duchy of Kurland (reverted to the Julian calendar in
6892fe8fb19SBen Gras                 1796)
6902fe8fb19SBen Gras
691*0a6a1f1dSLionel Sambuc          1624 - bishopric of Osnabrück
6922fe8fb19SBen Gras
6932fe8fb19SBen Gras          1630 - bishopric of Minden
6942fe8fb19SBen Gras
6952fe8fb19SBen Gras15/26 Mar 1631 - bishopric of Hildesheim
6962fe8fb19SBen Gras
6972fe8fb19SBen Gras          1655 - Kanton Wallis
6982fe8fb19SBen Gras
6992fe8fb19SBen Gras05/16 Feb 1682 - city of Strassburg
7002fe8fb19SBen Gras
7012fe8fb19SBen Gras18 Feb/
7022fe8fb19SBen Gras   01 Mar 1700 - Protestant Germany (including Swedish possessions in
7032fe8fb19SBen Gras                 Germany), Denmark, Norway
7042fe8fb19SBen Gras30 Jun/
7052fe8fb19SBen Gras   12 Jul 1700 - Gelderland, Zutphen
7062fe8fb19SBen Gras10 Nov/
7072fe8fb19SBen Gras   12 Dec 1700 - Utrecht, Overijssel
7082fe8fb19SBen Gras
7092fe8fb19SBen Gras31 Dec 1700/
710*0a6a1f1dSLionel Sambuc   12 Jan 1701 - Friesland, Groningen, Zürich, Bern, Basel, Geneva,
7112fe8fb19SBen Gras                 Turgau, and Schaffhausen
7122fe8fb19SBen Gras
7132fe8fb19SBen Gras          1724 - Glarus, Appenzell, and the city of St. Gallen
7142fe8fb19SBen Gras
7152fe8fb19SBen Gras01 Jan 1750    - Pisa and Florence
7162fe8fb19SBen Gras
7172fe8fb19SBen Gras02/14 Sep 1752 - Great Britain
7182fe8fb19SBen Gras
7192fe8fb19SBen Gras17 Feb/
7202fe8fb19SBen Gras   01 Mar 1753 - Sweden
7212fe8fb19SBen Gras
722*0a6a1f1dSLionel Sambuc1760-1812      - Graubünden
7232fe8fb19SBen Gras
7242fe8fb19SBen GrasThe Russian empire (including Finland and the Baltic states) did not
7252fe8fb19SBen Grasconvert to the Gregorian calendar until the Soviet revolution of 1917.
7262fe8fb19SBen Gras
7272fe8fb19SBen GrasSource: H. Grotefend, _Taschenbuch der Zeitrechnung des deutschen
7282fe8fb19SBen GrasMittelalters und der Neuzeit_, herausgegeben von Dr. O. Grotefend
7292fe8fb19SBen Gras(Hannover: Hahnsche Buchhandlung, 1941), pp. 26-28.
7302fe8fb19SBen Gras
7312fe8fb19SBen Gras
7322fe8fb19SBen Gras----- Time and time zones on Mars -----
7332fe8fb19SBen Gras
734*0a6a1f1dSLionel SambucSome people's work schedules use Mars time.  Jet Propulsion Laboratory
735*0a6a1f1dSLionel Sambuc(JPL) coordinators have kept Mars time on and off at least since 1997
736*0a6a1f1dSLionel Sambucfor the Mars Pathfinder mission.  Some of their family members have
737*0a6a1f1dSLionel Sambucalso adapted to Mars time.  Dozens of special Mars watches were built
738*0a6a1f1dSLionel Sambucfor JPL workers who kept Mars time during the Mars Exploration
7392fe8fb19SBen GrasRovers mission (2004).  These timepieces look like normal Seikos and
7402fe8fb19SBen GrasCitizens but use Mars seconds rather than terrestrial seconds.
7412fe8fb19SBen Gras
7422fe8fb19SBen GrasA Mars solar day is called a "sol" and has a mean period equal to
7432fe8fb19SBen Grasabout 24 hours 39 minutes 35.244 seconds in terrestrial time.  It is
7442fe8fb19SBen Grasdivided into a conventional 24-hour clock, so each Mars second equals
7452fe8fb19SBen Grasabout 1.02749125 terrestrial seconds.
7462fe8fb19SBen Gras
7472fe8fb19SBen GrasThe prime meridian of Mars goes through the center of the crater
7482fe8fb19SBen GrasAiry-0, named in honor of the British astronomer who built the
7492fe8fb19SBen GrasGreenwich telescope that defines Earth's prime meridian.  Mean solar
7502fe8fb19SBen Grastime on the Mars prime meridian is called Mars Coordinated Time (MTC).
7512fe8fb19SBen Gras
7522fe8fb19SBen GrasEach landed mission on Mars has adopted a different reference for
7532fe8fb19SBen Grassolar time keeping, so there is no real standard for Mars time zones.
7542fe8fb19SBen GrasFor example, the Mars Exploration Rover project (2004) defined two
7552fe8fb19SBen Grastime zones "Local Solar Time A" and "Local Solar Time B" for its two
7562fe8fb19SBen Grasmissions, each zone designed so that its time equals local true solar
7572fe8fb19SBen Grastime at approximately the middle of the nominal mission.  Such a "time
7582fe8fb19SBen Graszone" is not particularly suited for any application other than the
7592fe8fb19SBen Grasmission itself.
7602fe8fb19SBen Gras
7612fe8fb19SBen GrasMany calendars have been proposed for Mars, but none have achieved
7622fe8fb19SBen Graswide acceptance.  Astronomers often use Mars Sol Date (MSD) which is a
7632fe8fb19SBen Grassequential count of Mars solar days elapsed since about 1873-12-29
7642fe8fb19SBen Gras12:00 GMT.
7652fe8fb19SBen Gras
7662fe8fb19SBen GrasThe tz database does not currently support Mars time, but it is
7672fe8fb19SBen Grasdocumented here in the hopes that support will be added eventually.
7682fe8fb19SBen Gras
7692fe8fb19SBen GrasSources:
7702fe8fb19SBen Gras
7712fe8fb19SBen GrasMichael Allison and Robert Schmunk,
7722fe8fb19SBen Gras"Technical Notes on Mars Solar Time as Adopted by the Mars24 Sunclock"
77384d9c625SLionel Sambuc<http://www.giss.nasa.gov/tools/mars24/help/notes.html> (2012-08-08).
7742fe8fb19SBen Gras
7752fe8fb19SBen GrasJia-Rui Chong, "Workdays Fit for a Martian", Los Angeles Times
77684d9c625SLionel Sambuc<http://articles.latimes.com/2004/jan/14/science/sci-marstime14>
7772fe8fb19SBen Gras(2004-01-14), pp A1, A20-A21.
778*0a6a1f1dSLionel Sambuc
779*0a6a1f1dSLionel SambucTom Chmielewski, "Jet Lag Is Worse on Mars", The Atlantic (2015-02-26)
780*0a6a1f1dSLionel Sambuc<http://www.theatlantic.com/technology/archive/2015/02/jet-lag-is-worse-on-mars/386033/>
781*0a6a1f1dSLionel Sambuc
782*0a6a1f1dSLionel Sambuc-----
783*0a6a1f1dSLionel Sambuc
784*0a6a1f1dSLionel SambucThis file is in the public domain, so clarified as of 2009-05-17 by
785*0a6a1f1dSLionel SambucArthur David Olson.
786*0a6a1f1dSLionel Sambuc
787*0a6a1f1dSLionel Sambuc-----
788*0a6a1f1dSLionel SambucLocal Variables:
789*0a6a1f1dSLionel Sambuccoding: utf-8
790*0a6a1f1dSLionel SambucEnd:
791