123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790 |
- Theory and pragmatics of the tz code and data
- ----- Outline -----
- Scope of the tz database
- Names of time zone rules
- Time zone abbreviations
- Accuracy of the tz database
- Time and date functions
- Calendrical issues
- Time and time zones on Mars
- ----- Scope of the tz database -----
- The tz database attempts to record the history and predicted future of
- all computer-based clocks that track civil time. To represent this
- data, the world is partitioned into regions whose clocks all agree
- about time stamps that occur after the somewhat-arbitrary cutoff point
- of the POSIX Epoch (1970-01-01 00:00:00 UTC). For each such region,
- the database records all known clock transitions, and labels the region
- with a notable location. Although 1970 is a somewhat-arbitrary
- cutoff, there are significant challenges to moving the cutoff earlier
- even by a decade or two, due to the wide variety of local practices
- before computer timekeeping became prevalent.
- Clock transitions before 1970 are recorded for each such location,
- because most systems support time stamps before 1970 and could
- misbehave if data entries were omitted for pre-1970 transitions.
- However, the database is not designed for and does not suffice for
- applications requiring accurate handling of all past times everywhere,
- as it would take far too much effort and guesswork to record all
- details of pre-1970 civil timekeeping.
- As described below, reference source code for using the tz database is
- also available. The tz code is upwards compatible with POSIX, an
- international standard for UNIX-like systems. As of this writing, the
- current edition of POSIX is:
- The Open Group Base Specifications Issue 7
- IEEE Std 1003.1, 2013 Edition
- <http://pubs.opengroup.org/onlinepubs/9699919799/>
- ----- Names of time zone rules -----
- Each of the database's time zone rules has a unique name.
- Inexperienced users are not expected to select these names unaided.
- Distributors should provide documentation and/or a simple selection
- interface that explains the names; for one example, see the 'tzselect'
- program in the tz code. The Unicode Common Locale Data Repository
- <http://cldr.unicode.org/> contains data that may be useful for other
- selection interfaces.
- The time zone rule naming conventions attempt to strike a balance
- among the following goals:
- * Uniquely identify every region where clocks have agreed since 1970.
- This is essential for the intended use: static clocks keeping local
- civil time.
- * Indicate to experts where that region is.
- * Be robust in the presence of political changes. 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.
- * Use a consistent naming conventions over the entire world.
- 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
- location within that region. North and South America share the same
- area, 'America'. Typical names are 'Africa/Cairo', 'America/New_York',
- and 'Pacific/Honolulu'.
- Here are the general rules used for choosing location names,
- in decreasing order of importance:
- Use only valid POSIX file name components (i.e., the parts of
- names other than '/'). Do not use the file name
- components '.' and '..'. 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'. Exceptions: see the discussion
- of legacy names below.
- A name must not be empty, or contain '//', or start or end with '/'.
- Do not use names that differ only in case. Although the reference
- implementation is case-sensitive, some other implementations
- are not, and they would mishandle names differing only in case.
- If one name A is an initial prefix of another name AB (ignoring case),
- then B must not start with '/', as a regular file cannot have
- the same name as a directory in POSIX. For example,
- 'America/New_York' precludes 'America/New_York/Bronx'.
- Uninhabited regions like the North Pole and Bouvet Island
- do not need locations, since local time is not defined there.
- There should typically be at least one name for each ISO 3166-1
- officially assigned two-letter code for an inhabited country
- or territory.
- If all the clocks in a region have agreed since 1970,
- don't bother to include more than one location
- even if subregions' clocks disagreed before 1970.
- Otherwise these tables would become annoyingly large.
- If a name is ambiguous, use a less ambiguous alternative;
- e.g. many cities are named San José and Georgetown, so
- prefer 'Costa_Rica' to 'San_Jose' and 'Guyana' to 'Georgetown'.
- Keep locations compact. Use cities or small islands, not countries
- 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 mainstream English spelling, e.g. prefer 'Rome' to 'Roma', and
- prefer 'Athens' to the Greek 'Αθήνα' or the Romanized 'Athína'.
- The POSIX file name restrictions encourage this rule.
- Use the most populous among locations in a zone,
- e.g. prefer 'Shanghai' to 'Beijing'. Among locations with
- similar populations, pick the best-known location,
- e.g. prefer 'Rome' to 'Milan'.
- Use the singular form, e.g. prefer 'Canary' to 'Canaries'.
- Omit common suffixes like '_Islands' and '_City', unless that
- would lead to ambiguity. E.g. prefer 'Cayman' to
- 'Cayman_Islands' and 'Guatemala' to 'Guatemala_City',
- but prefer 'Mexico_City' to 'Mexico' because the country
- of Mexico has several time zones.
- 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.
- This means old spellings will continue to work.
- The file 'zone1970.tab' lists geographical locations used to name time
- zone rules. It is intended to be an exhaustive list of names for
- geographic regions as described above; this is a subset of the names
- in the data. Although a 'zone1970.tab' location's longitude
- corresponds to its LMT offset with one hour for every 15 degrees east
- longitude, this relationship is not exact.
- Older versions of this package used a different naming scheme,
- and these older names are still supported.
- 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', and 'EET' (see the file 'europe').
- Older versions of this package defined legacy names that are
- incompatible with the first rule of location names, but which are
- still supported. These legacy names are mostly defined in the file
- 'etcetera'. Also, the file 'backward' defines the legacy names
- 'GMT0', 'GMT-0', 'GMT+0' and 'Canada/East-Saskatchewan', and the file
- 'northamerica' defines the legacy names 'EST5EDT', 'CST6CDT',
- 'MST7MDT', and 'PST8PDT'.
- Excluding 'backward' should not affect the other data. If
- 'backward' is excluded, excluding 'etcetera' should not affect the
- remaining data.
- ----- Time zone abbreviations -----
- When this package is installed, it generates time zone abbreviations
- like 'EST' to be compatible with human tradition and POSIX.
- Here are the general rules used for choosing time zone abbreviations,
- in decreasing order of importance:
- 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.
- 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 TZ string. POSIX
- requires at least three characters for an
- abbreviation. POSIX through 2000 says that an abbreviation
- cannot start with ':', and cannot contain ',', '-',
- '+', NUL, or a digit. POSIX from 2001 on changes this
- rule to say that an abbreviation can contain only '-', '+',
- and alphanumeric characters from the portable character set
- in the current locale. To be portable to both sets of
- rules, an abbreviation must therefore use only ASCII
- letters.
- 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'.
- Use 'LMT' for local mean time of locations before the introduction
- of standard time; see "Scope of the tz database".
- If there is no common English abbreviation, use numeric offsets like
- -05 and +0830 that are generated by zic's %z notation.
- [The remaining guidelines predate the introduction of %z.
- They are problematic as they mean tz data entries invent
- notation rather than record it. These guidelines are now
- deprecated and the plan is to gradually move to %z for
- inhabited locations and to "-00" for uninhabited locations.]
- 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
- (e.g. "Cape Verde Time"), then:
- When a country is identified with a single or principal zone,
- append 'T' to the country's ISO code, e.g. 'CVT' for
- Cape Verde Time. For summer time append 'ST';
- for double summer time append 'DST'; etc.
- Otherwise, take the first three letters of an English place
- name identifying each zone and append 'T', 'ST', etc.
- as before; e.g. 'VLAST' for VLAdivostok Summer Time.
- Use UT (with time zone abbreviation 'zzz') for locations while
- uninhabited. The 'zzz' mnemonic is that these locations are,
- in some sense, asleep.
- Application writers should note that these abbreviations are ambiguous
- in practice: e.g. 'CST' has a different meaning in China than
- it does in the United States. In new applications, it's often better
- to use numeric UT offsets like '-0600' instead of time zone
- abbreviations like 'CST'; this avoids the ambiguity.
- ----- Accuracy of the tz database -----
- The tz database is not authoritative, and it surely has errors.
- Corrections are welcome and encouraged; see the file CONTRIBUTING.
- Users requiring authoritative data should consult national standards
- bodies and the references cited in the database's comments.
- Errors in the tz database arise from many sources:
- * The tz database predicts future time stamps, and current predictions
- will be incorrect after future governments change the rules.
- For example, if today someone schedules a meeting for 13:00 next
- October 1, Casablanca time, and tomorrow Morocco changes its
- daylight saving rules, software can mess up after the rule change
- if it blithely relies on conversions made before the change.
- * The pre-1970 entries in this database cover only a tiny sliver of how
- clocks actually behaved; the vast majority of the necessary
- information was lost or never recorded. Thousands more zones would
- be needed if the tz database's scope were extended to cover even
- just the known or guessed history of standard time; for example,
- the current single entry for France would need to split into dozens
- of entries, perhaps hundreds.
- * Most of the pre-1970 data entries come from unreliable sources, often
- astrology books that lack citations and whose compilers evidently
- invented entries when the true facts were unknown, without
- reporting which entries were known and which were invented.
- These books often contradict each other or give implausible entries,
- and on the rare occasions when they are checked they are
- typically found to be incorrect.
- * For the UK the tz database relies on years of first-class work done by
- Joseph Myers and others; see <http://www.polyomino.org.uk/british-time/>.
- Other countries are not done nearly as well.
- * Sometimes, different people in the same city would maintain clocks
- that differed significantly. Railway time was used by railroad
- companies (which did not always agree with each other),
- church-clock time was used for birth certificates, etc.
- Often this was merely common practice, but sometimes it was set by law.
- For example, from 1891 to 1911 the UT offset in France was legally
- 0:09:21 outside train stations and 0:04:21 inside.
- * Although a named location in the tz database stands for the
- containing region, its pre-1970 data entries are often accurate for
- only a small subset of that region. For example, Europe/London
- stands for the United Kingdom, but its pre-1847 times are valid
- only for locations that have London's exact meridian, and its 1847
- transition to GMT is known to be valid only for the L&NW and the
- Caledonian railways.
- * The tz database does not record the earliest time for which a zone's
- data entries are thereafter valid for every location in the region.
- For example, Europe/London is valid for all locations in its
- region after GMT was made the standard time, but the date of
- standardization (1880-08-02) is not in the tz database, other than
- in commentary. For many zones the earliest time of validity is
- unknown.
- * The tz database does not record a region's boundaries, and in many
- cases the boundaries are not known. For example, the zone
- America/Kentucky/Louisville represents a region around the city of
- Louisville, the boundaries of which are unclear.
- * Changes that are modeled as instantaneous transitions in the tz
- database were often spread out over hours, days, or even decades.
- * Even if the time is specified by law, locations sometimes
- deliberately flout the law.
- * Early timekeeping practices, even assuming perfect clocks, were
- often not specified to the accuracy that the tz database requires.
- * Sometimes historical timekeeping was specified more precisely
- than what the tz database can handle. For example, from 1909 to
- 1937 Netherlands clocks were legally UT+00:19:32.13, but the tz
- database cannot represent the fractional second.
- * Even when all the timestamp transitions recorded by the tz database
- are correct, the tz rules that generate them may not faithfully
- reflect the historical rules. For example, from 1922 until World
- War II the UK moved clocks forward the day following the third
- Saturday in April unless that was Easter, in which case it moved
- clocks forward the previous Sunday. Because the tz database has no
- way to specify Easter, these exceptional years are entered as
- separate tz Rule lines, even though the legal rules did not change.
- * The tz database models pre-standard time using the proleptic Gregorian
- calendar and local mean time (LMT), but many people used other
- calendars and other timescales. For example, the Roman Empire used
- the Julian calendar, and had 12 varying-length daytime hours with a
- non-hour-based system at night.
- * Early clocks were less reliable, and data entries do not represent
- this unreliability.
- * As for leap seconds, civil time was not based on atomic time before
- 1972, and we don't know the history of earth's rotation accurately
- enough to map SI seconds to historical solar time to more than
- about one-hour accuracy. See: Morrison LV, Stephenson FR.
- Historical values of the Earth's clock error Delta T and the
- calculation of eclipses. J Hist Astron. 2004;35:327-36
- <http://adsabs.harvard.edu/full/2004JHA....35..327M>;
- Historical values of the Earth's clock error. J Hist Astron. 2005;36:339
- <http://adsabs.harvard.edu/full/2005JHA....36..339M>.
- * The relationship between POSIX time (that is, UTC but ignoring leap
- seconds) and UTC is not agreed upon after 1972. Although the POSIX
- clock officially stops during an inserted leap second, at least one
- proposed standard has it jumping back a second instead; and in
- practice POSIX clocks more typically either progress glacially during
- a leap second, or are slightly slowed while near a leap second.
- * The tz database does not represent how uncertain its information is.
- Ideally it would contain information about when data entries are
- incomplete or dicey. Partial temporal knowledge is a field of
- active research, though, and it's not clear how to apply it here.
- In short, many, perhaps most, of the tz database's pre-1970 and future
- time stamps are either wrong or misleading. Any attempt to pass the
- tz database off as the definition of time should be unacceptable to
- anybody who cares about the facts. In particular, the tz database's
- LMT offsets should not be considered meaningful, and should not prompt
- creation of zones merely because two locations differ in LMT or
- transitioned to standard time at different dates.
- ----- Time and date functions -----
- The tz code contains time and date functions that are upwards
- compatible with those of POSIX.
- POSIX has the following properties and limitations.
- * In POSIX, time display in a process is controlled by the
- environment variable TZ. Unfortunately, the POSIX TZ string takes
- a form that is hard to describe and is error-prone in practice.
- Also, POSIX TZ strings can't deal with other (for example, Israeli)
- daylight saving time rules, or situations where more than two
- time zone abbreviations are used in an area.
- The POSIX TZ string takes the following form:
- 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.
- Starting with POSIX.1-2001, std and dst may also be
- in a quoted form like "<UTC+10>"; this allows
- "+" and "-" in the names.
- offset
- is of the form '[+-]hh:[mm[:ss]]' and specifies the
- offset west of UT. 'hh' may be a single digit; 0<=hh<=24.
- The default DST offset is one hour ahead of standard time.
- date[/time],date[/time]
- specifies the beginning and end of DST. If this is absent,
- the system supplies its own rules for DST, and these can
- differ from year to year; typically US DST rules are used.
- time
- takes the form 'hh:[mm[:ss]]' and defaults to 02:00.
- This is the same format as the offset, except that a
- leading '+' or '-' is not allowed.
- date
- takes one of the following forms:
- Jn (1<=n<=365)
- origin-1 day number not counting February 29
- n (0<=n<=365)
- origin-0 day number counting February 29 if present
- Mm.n.d (0[Sunday]<=d<=6[Saturday], 1<=n<=5, 1<=m<=12)
- for the dth day of week n of month m of the year,
- where week 1 is the first week in which day d appears,
- and '5' stands for the last week in which day d appears
- (which may be either the 4th or 5th week).
- Typically, this is the only useful form;
- the n and Jn forms are rarely used.
- Here is an example POSIX TZ string, for US Pacific time using rules
- appropriate from 1987 through 2006:
- TZ='PST8PDT,M4.1.0/02:00,M10.5.0/02:00'
- This POSIX TZ string is hard to remember, and mishandles time stamps
- before 1987 and after 2006. With this package you can use this
- instead:
- TZ='America/Los_Angeles'
- * POSIX does not define the exact meaning of TZ values like "EST5EDT".
- Typically the current US DST rules are used to interpret such values,
- but this means that the US DST rules are compiled into each program
- that does time conversion. This means that when US time conversion
- rules change (as in the United States in 1987), all programs that
- do time conversion must be recompiled to ensure proper results.
- * In POSIX, there's no tamper-proof way for a process to learn the
- system's best idea of local wall clock. (This is important for
- applications that an administrator wants used only at certain times -
- without regard to whether the user has fiddled the "TZ" environment
- variable. While an administrator can "do everything in UTC" to get
- around the problem, doing so is inconvenient and precludes handling
- daylight saving time shifts - as might be required to limit phone
- calls to off-peak hours.)
- * POSIX requires that systems ignore leap seconds.
- * The tz code attempts to support all the time_t implementations
- allowed by POSIX. The time_t type represents a nonnegative count of
- seconds since 1970-01-01 00:00:00 UTC, ignoring leap seconds.
- In practice, time_t is usually a signed 64- or 32-bit integer; 32-bit
- signed time_t values stop working after 2038-01-19 03:14:07 UTC, so
- new implementations these days typically use a signed 64-bit integer.
- Unsigned 32-bit integers are used on one or two platforms,
- and 36-bit and 40-bit integers are also used occasionally.
- Although earlier POSIX versions allowed time_t to be a
- floating-point type, this was not supported by any practical
- systems, and POSIX.1-2013 and the tz code both require time_t
- to be an integer type.
- These are the extensions that have been made to the POSIX functions:
- * The "TZ" environment variable is used in generating the name of a file
- from which time zone information is read (or is interpreted a la
- POSIX); "TZ" is no longer constrained to be a three-letter time zone
- name followed by a number of hours and an optional three-letter
- daylight time zone name. The daylight saving time rules to be used
- for a particular time zone are encoded in the time zone file;
- the format of the file allows U.S., Australian, and other rules to be
- encoded, and allows for situations where more than two time zone
- abbreviations are used.
- It was recognized that allowing the "TZ" environment variable to
- take on values such as "America/New_York" might cause "old" programs
- (that expect "TZ" to have a certain form) to operate incorrectly;
- consideration was given to using some other environment variable
- (for example, "TIMEZONE") to hold the string used to generate the
- time zone information file name. In the end, however, it was decided
- to continue using "TZ": it is widely used for time zone purposes;
- separately maintaining both "TZ" and "TIMEZONE" seemed a nuisance;
- and systems where "new" forms of "TZ" might cause problems can simply
- use TZ values such as "EST5EDT" which can be used both by
- "new" programs (a la POSIX) and "old" programs (as zone names and
- offsets).
- * To handle places where more than two time zone abbreviations are used,
- the functions "localtime" and "gmtime" set tzname[tmp->tm_isdst]
- (where "tmp" is the value the function returns) to the time zone
- abbreviation to be used. This differs from POSIX, where the elements
- of tzname are only changed as a result of calls to tzset.
- * Since the "TZ" environment variable can now be used to control time
- conversion, the "daylight" and "timezone" variables are no longer
- needed. (These variables are defined and set by "tzset"; however, their
- values will not be used by "localtime.")
- * The "localtime" function has been set up to deliver correct results
- for near-minimum or near-maximum time_t values. (A comment in the
- source code tells how to get compatibly wrong results).
- * A function "tzsetwall" has been added to arrange for the system's
- best approximation to local wall clock time to be delivered by
- subsequent calls to "localtime." Source code for portable
- applications that "must" run on local wall clock time should call
- "tzsetwall();" if such code is moved to "old" systems that don't
- provide tzsetwall, you won't be able to generate an executable program.
- (These time zone functions also arrange for local wall clock time to be
- used if tzset is called - directly or indirectly - and there's no "TZ"
- environment variable; portable applications should not, however, rely
- on this behavior since it's not the way SVR2 systems behave.)
- * Negative time_t values are supported, on systems where time_t is signed.
- * These functions can account for leap seconds, thanks to Bradley White.
- Points of interest to folks with other systems:
- * This package is already part of many POSIX-compliant hosts,
- including BSD, HP, Linux, Network Appliance, SCO, SGI, and Sun.
- On such hosts, the primary use of this package
- is to update obsolete time zone rule tables.
- To do this, you may need to compile the time zone compiler
- 'zic' supplied with this package instead of using the system 'zic',
- 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;
- 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.
- Programs that in the past used the timezone function may now examine
- tzname[localtime(&clock)->tm_isdst] to learn the correct time
- zone abbreviation to use. Alternatively, use
- localtime(&clock)->tm_zone if this has been enabled.
- * The 4.2BSD gettimeofday function is not used in this package.
- This formerly let users obtain the current UTC offset and DST flag,
- but this functionality was removed in later versions of BSD.
- * In SVR2, time conversion fails for near-minimum or near-maximum
- time_t values when doing conversions for places that don't use UT.
- This package takes care to do these conversions correctly.
- The functions that are conditionally compiled if STD_INSPIRED is defined
- should, at this point, be looked on primarily as food for thought. They are
- not in any sense "standard compatible" - some are not, in fact, specified in
- *any* standard. They do, however, represent responses of various authors to
- standardization proposals.
- Other time conversion proposals, in particular the one developed by folks at
- Hewlett Packard, offer a wider selection of functions that provide capabilities
- beyond those provided here. The absence of such functions from this package
- is not meant to discourage the development, standardization, or use of such
- functions. Rather, their absence reflects the decision to make this package
- contain valid extensions to POSIX, to ensure its broad acceptability. If
- more powerful time conversion functions can be standardized, so much the
- better.
- ----- 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,
- Calendrical Calculations: Third Edition, Cambridge University Press (2008)
- <http://emr.cs.iit.edu/home/reingold/calendar-book/third-edition/>.
- 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 (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
- ...
- If your source is correct, how come documents between 1929 and 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: Mark Brader
- Subject: Re: Gregorian reform - a part of locale?
- <news:1996Jul6.012937.29190@sq.com>
- 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: "Tideräkning och historia"
- by Natanael Beckman (1924) and "Tid, en bok om tideräkning och
- kalenderväsen" by Lars-Olof Lodén (1968).
- Grotefend's data
- From: "Michael Palmer" [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
- ...
- 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üttich)
- 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 Oberelsaß and Breisgau
- 20/31 Oct 1583 - bishopric of Basel
- 02/13 Nov 1583 - duchy of Jülich-Berg
- 02/13 Nov 1583 - electorate and city of Köln
- 04/15 Nov 1583 - bishopric of Würzburg
- 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ünster and duchy of Cleve
- 14/25 Dec 1583 - Steiermark
- 06/17 Jan 1584 - Austria and Bohemia
- 11/22 Jan 1584 - Lucerne, 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ück
- 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ürich, 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ünden
- 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's work schedules use Mars time. Jet Propulsion Laboratory
- (JPL) coordinators have kept Mars time on and off at least since 1997
- for the Mars Pathfinder mission. Some of their family members have
- also adapted to Mars time. Dozens of special Mars watches were built
- for JPL 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> (2012-08-08).
- Jia-Rui Chong, "Workdays Fit for a Martian", Los Angeles Times
- <http://articles.latimes.com/2004/jan/14/science/sci-marstime14>
- (2004-01-14), pp A1, A20-A21.
- Tom Chmielewski, "Jet Lag Is Worse on Mars", The Atlantic (2015-02-26)
- <http://www.theatlantic.com/technology/archive/2015/02/jet-lag-is-worse-on-mars/386033/>
- -----
- This file is in the public domain, so clarified as of 2009-05-17 by
- Arthur David Olson.
- -----
- Local Variables:
- coding: utf-8
- End:
|