tz
code and datatz
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 timestamps 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.
++The tz
++database attempts to record the history and predicted future of
++all computer-based clocks that track civil time.
++It organizes time zone and daylight saving time
++data by partitioning the world into regions
++whose clocks all agree about timestamps that occur after the of the POSIX Epoch
++(1970-01-01 00:00:00 UTC).
++The database labels each such region with a notable location and
++records all known clock transitions for that 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.
+
+@@ -59,193 +60,218 @@ +
+ +
+-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-2008, 2016 Edition.
++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-2008, 2016
++Edition.
++Because the database's scope encompasses real-world changes to civil
++timekeeping, its model for describing time is more complex than the
++standard and daylight saving times supported by POSIX.
++A tz
region corresponds to a ruleset that can
++have more than two changes per year, these changes need not merely
++flip back and forth between two alternatives, and the rules themselves
++can change at times.
++Whether and when a tz
region changes its
++clock, and even the region's notional base offset from UTC, are variable.
++It doesn't even really make sense to talk about a region's
++"base offset", since it is not necessarily a single number.
+
+-Each of the database's time zone rules has a unique name.
++Each tz
region has a unique name that
++corresponds to a set of time zone rules.
+ 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 contains data that may be useful for other
+-selection interfaces.
++program in the tz
code.
++The Unicode Common Locale Data
++Repository contains data that may be useful for other selection
++interfaces.
+
+-The time zone rule naming conventions attempt to strike a balance ++The naming conventions attempt to strike a balance + among the following goals: +
++ +
+-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
'.
++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,
++Here are the general guidelines used for
++choosing tz
region names,
+ in decreasing order of importance:
+
/
'). 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.
++ 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.
+ //
', or
+- start or end with '/
'.
++ A name must not be empty, or contain '//
', or
++ start or end 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
'.
++ 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
'.
+ Costa_Rica
' to 'San_Jose
' and 'Guyana
' to 'Georgetown
'.
++ 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
'.
+ Paris
' to 'France
', since
+- France has had multiple time zones.
++ Keep locations compact.
++ Use cities or small islands, not countries or regions, so that any
++ future changes do not split individual locations into different
++ tz
regions.
++ E.g., prefer 'Paris
' to 'France
', since
++ France
++ has had multiple time zones.
+ Rome
' to 'Roma
', and prefer
+- 'Athens
' to the Greek
+- 'Αθήνα
' or the Romanized
+- 'Athína
'.
+- The POSIX file name restrictions encourage this rule.
++ 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 guideline.
+ Shanghai
' to
+- 'Beijing
'. Among locations with
+- similar populations, pick the best-known location,
+- e.g. prefer 'Rome
' to 'Milan
'.
++ Use the most populous among locations in a region,
++ e.g., prefer 'Shanghai
' to
++ 'Beijing
'.
++ Among locations with similar populations, pick the best-known
++ location, e.g., prefer 'Rome
' to
++ 'Milan
'.
+ Canary
' to 'Canaries
'.
++ Use the singular form, e.g., prefer 'Canary
' to
++ 'Canaries
'.
+ _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.
++ 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.
+ _
' to represent a space.
++ Use '_
' to represent a space.
+ .
' from abbreviations in names, e.g. prefer
+- 'St_Helena
' to 'St._Helena
'.
++ Omit '.
' from abbreviations in names.
++ E.g., prefer 'St_Helena
' to 'St._Helena
'.
+ Rome
' to
+- 'Milan
' merely because
+- Milan's population has grown to be somewhat greater
+- than Rome's.
++ Do not change established names if they only marginally violate
++ the above guidelines.
++ 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.
+ backward
' file.
+- This means old spellings will continue to work.
++ 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° east
+-longitude, this relationship is not exact.
++to name tz
regions.
++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 local mean
++time (LMT) offset with one hour for every 15°
++east longitude, this relationship is not exact.
+
+@@ -254,202 +280,233 @@
+ 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
').
++'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
' and 'GMT+0
', and the file 'northamerica
' defines the
+-legacy names 'EST5EDT
', 'CST6CDT
', 'MST7MDT
', and 'PST8PDT
'.
++incompatible with the first guideline 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
' and 'GMT+0
',
++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.
++Excluding 'backward
' should not affect the other data.
++If 'backward
' is excluded, excluding
++'etcetera
' should not affect the remaining data.
+
+ 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,
++Here are the general guidelines used for choosing time zone abbreviations,
+ in decreasing order of importance:
++
+
' or '-
'.
+- 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 lower-case letters are now allowed.
+- Also, POSIX from 2001 on relaxed the rule to allow
+- '-
', '+
',
+- and alphanumeric characters from the portable character set
+- in the current locale. In practice ASCII alphanumerics and
+- '+
' and '-
' are safe in all locales.
++ Use three to six characters that are ASCII alphanumerics or
++ '+
' or '-
'.
++ 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 guideline required upper-case letters, but the
++ Congressman who introduced
++ Chamorro
++ Standard Time preferred "ChST", so lower-case letters are now
++ allowed.
++ Also, POSIX from 2001 on relaxed the rule to allow '-
',
++ '+
', and alphanumeric characters from the portable
++ character set in the current locale.
++ In practice ASCII alphanumerics and '+
' and
++ '-
' are safe in all locales.
+
+- In other words, in the C locale the POSIX extended regular
+- expression [-+[:alnum:]]{3,6}
should match
+- the abbreviation.
+- This guarantees that all abbreviations could have been
+- specified by a POSIX TZ string.
++
++ In other words, in the C locale the POSIX extended regular
++ expression [-+[:alnum:]]{3,6}
should match the
++ abbreviation.
++ This guarantees that all abbreviations could have been specified by a
++ POSIX TZ
string.
++
These abbreviations (for standard/daylight/etc. time) are: +-ACST/ACDT Australian Central, +-AST/ADT/APT/AWT/ADDT Atlantic, +-AEST/AEDT Australian Eastern, +-AHST/AHDT Alaska-Hawaii, +-AKST/AKDT Alaska, +-AWST/AWDT Australian Western, +-BST/BDT Bering, +-CAT/CAST Central Africa, +-CET/CEST/CEMT Central European, +-ChST Chamorro, +-CST/CDT/CWT/CPT/CDDT Central [North America], +-CST/CDT China, +-GMT/BST/IST/BDST Greenwich, +-EAT East Africa, +-EST/EDT/EWT/EPT/EDDT Eastern [North America], +-EET/EEST Eastern European, +-GST Guam, +-HST/HDT Hawaii, +-HKT/HKST Hong Kong, +-IST India, +-IST/GMT Irish, +-IST/IDT/IDDT Israel, +-JST/JDT Japan, +-KST/KDT Korea, +-MET/MEST Middle European (a backward-compatibility alias for Central European), +-MSK/MSD Moscow, +-MST/MDT/MWT/MPT/MDDT Mountain, +-NST/NDT/NWT/NPT/NDDT Newfoundland, +-NST/NDT/NWT/NPT Nome, +-NZMT/NZST New Zealand through 1945, +-NZST/NZDT New Zealand 1946–present, +-PKT/PKST Pakistan, +-PST/PDT/PWT/PPT/PDDT Pacific, +-SAST South Africa, +-SST Samoa, +-WAT/WAST West Africa, +-WET/WEST/WEMT Western European, +-WIB Waktu Indonesia Barat, +-WIT Waktu Indonesia Timur, +-WITA Waktu Indonesia Tengah, +-YST/YDT/YWT/YPT/YDDT Yukon.
++++ These abbreviations (for standard/daylight/etc. time) are: ++ ACST/ACDT Australian Central, ++ AST/ADT/APT/AWT/ADDT Atlantic, ++ AEST/AEDT Australian Eastern, ++ AHST/AHDT Alaska-Hawaii, ++ AKST/AKDT Alaska, ++ AWST/AWDT Australian Western, ++ BST/BDT Bering, ++ CAT/CAST Central Africa, ++ CET/CEST/CEMT Central European, ++ ChST Chamorro, ++ CST/CDT/CWT/CPT/CDDT Central [North America], ++ CST/CDT China, ++ GMT/BST/IST/BDST Greenwich, ++ EAT East Africa, ++ EST/EDT/EWT/EPT/EDDT Eastern [North America], ++ EET/EEST Eastern European, ++ GST Guam, ++ HST/HDT Hawaii, ++ HKT/HKST Hong Kong, ++ IST India, ++ IST/GMT Irish, ++ IST/IDT/IDDT Israel, ++ JST/JDT Japan, ++ KST/KDT Korea, ++ MET/MEST Middle European (a backward-compatibility alias for ++ Central European), ++ MSK/MSD Moscow, ++ MST/MDT/MWT/MPT/MDDT Mountain, ++ NST/NDT/NWT/NPT/NDDT Newfoundland, ++ NST/NDT/NWT/NPT Nome, ++ NZMT/NZST New Zealand through 1945, ++ NZST/NZDT New Zealand 1946–present, ++ PKT/PKST Pakistan, ++ PST/PDT/PWT/PPT/PDDT Pacific, ++ SAST South Africa, ++ SST Samoa, ++ WAT/WAST West Africa, ++ WET/WEST/WEMT Western European, ++ WIB Waktu Indonesia Barat, ++ WIT Waktu Indonesia Timur, ++ WITA Waktu Indonesia Tengah, ++ YST/YDT/YWT/YPT/YDDT Yukon. ++
+-
004430' for MMT) would
+-cause trouble here, as the numeric strings would exceed the POSIX length limit.
++
++ For times taken from a city's longitude, use the
++ traditional xMT notation.
++ The only abbreviation like this in current use is 'GMT'.
++ The others are for timestamps before 1960,
++ except that Monrovia Mean Time persisted until 1972.
++ Typically, numeric abbreviations (e.g., '-
004430' for
++ MMT) would cause trouble here, as the numeric strings would exceed
++ the POSIX length limit.
++
These abbreviations are: +-AMT Amsterdam, Asunción, Athens; +-BMT Baghdad, Bangkok, Batavia, Bern, Bogotá, Bridgetown, Brussels, Bucharest; +-CMT Calamarca, Caracas, Chisinau, Colón, Copenhagen, Córdoba; +-DMT Dublin/Dunsink; +-EMT Easter; +-FFMT Fort-de-France; +-FMT Funchal; +-GMT Greenwich; +-HMT Havana, Helsinki, Horta, Howrah; +-IMT Irkutsk, Istanbul; +-JMT Jerusalem; +-KMT Kaunas, Kiev, Kingston; +-LMT Lima, Lisbon, local, Luanda; +-MMT Macassar, Madras, Malé, Managua, Minsk, Monrovia, Montevideo, Moratuwa, +- Moscow; +-PLMT Phù Liễn; +-PMT Paramaribo, Paris, Perm, Pontianak, Prague; +-PMMT Port Moresby; +-QMT Quito; +-RMT Rangoon, Riga, Rome; +-SDMT Santo Domingo; +-SJMT San José; +-SMT Santiago, Simferopol, Singapore, Stanley; +-TBMT Tbilisi; +-TMT Tallinn, Tehran; +-WMT Warsaw.
++++ These abbreviations are: ++ AMT Amsterdam, Asunción, Athens; ++ BMT Baghdad, Bangkok, Batavia, Bern, Bogotá, Bridgetown, Brussels, ++ Bucharest; ++ CMT Calamarca, Caracas, Chisinau, Colón, Copenhagen, Córdoba; ++ DMT Dublin/Dunsink; ++ EMT Easter; ++ FFMT Fort-de-France; ++ FMT Funchal; ++ GMT Greenwich; ++ HMT Havana, Helsinki, Horta, Howrah; ++ IMT Irkutsk, Istanbul; ++ JMT Jerusalem; ++ KMT Kaunas, Kiev, Kingston; ++ LMT Lima, Lisbon, local, Luanda; ++ MMT Macassar, Madras, Malé, Managua, Minsk, Monrovia, Montevideo, ++ Moratuwa, Moscow; ++ PLMT Phù Liễn; ++ PMT Paramaribo, Paris, Perm, Pontianak, Prague; ++ PMMT Port Moresby; ++ QMT Quito; ++ RMT Rangoon, Riga, Rome; ++ SDMT Santo Domingo; ++ SJMT San José; ++ SMT Santiago, Simferopol, Singapore, Stanley; ++ TBMT Tbilisi; ++ TMT Tallinn, Tehran; ++ WMT Warsaw. ++
+ +-A few abbreviations also follow the pattern that +-GMT/BST established for time in the UK. They are: +- +-CMT/BST for Calamarca Mean Time and Bolivian Summer Time +-1890–1932, DMT/IST for Dublin/Dunsink Mean Time and Irish Summer Time +-1880–1916, MMT/MST/MDST for Moscow 1880–1919, and RMT/LST +-for Riga Mean Time and Latvian Summer time 1880–1926. +-An extra-special case is SET for Swedish Time (svensk +-normaltid) 1879–1899, 3° west of the Stockholm +-Observatory.
++++ A few abbreviations also follow the pattern that ++ GMT/BST established for time in the UK. ++ They are: ++ CMT/BST for Calamarca Mean Time and Bolivian Summer Time ++ 1890–1932, ++ DMT/IST for Dublin/Dunsink Mean Time and Irish Summer Time ++ 1880–1916, ++ MMT/MST/MDST for Moscow 1880–1919, and ++ RMT/LST for Riga Mean Time and Latvian Summer time 1880–1926. ++ An extra-special case is SET for Swedish Time (svensk ++ normaltid) 1879–1899, 3° west of the Stockholm ++ Observatory. ++
+tz
database".
+ -
05 and +
0830 that are
+- generated by zic's %z
notation.
++ If there is no common English abbreviation, use numeric offsets like
++ -
05 and +
0830 that are generated
++ by zic
's %z
notation.
+ tz
region's history.
++ For example, if history tends to use numeric
++ abbreviations and a particular entry could go either way, use a
++ numeric abbreviation.
+ -
00') for
+- locations while uninhabited. The leading
+- '-
' is a flag that the time
+- zone is in some sense undefined; this notation is
+- derived from Internet RFC 3339.
++ Use
++ Universal Time
++ (UT) (with time zone abbreviation '-
00') for
++ locations while uninhabited.
++ The leading '-
' is a flag that the UT offset is in
++ some sense undefined; this notation is derived
++ from Internet
++ RFC 3339.
+
+ Application writers should note that these abbreviations are ambiguous
+ in practice: e.g., 'CST' means one thing in China and something else
+ in North America, and 'IST' can refer to time in India, Ireland or
+-Israel. To avoid ambiguity, use numeric UT offsets like
++Israel.
++To avoid ambiguity, use numeric UT offsets like
+ '-
0600' instead of time zone abbreviations like 'CST'.
+
tz
database
+-The tz database is not authoritative, and it surely has errors.
++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.
+@@ -456,641 +513,775 @@
+
+-Errors in the tz database arise from many sources:
++Errors in the tz
database arise from many sources:
+
tz
database predicts future
++ timestamps, 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.
+ tz
regions 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.
++ And in most of the world even this approach would be misleading
++ due to widespread disagreement or indifference about what times
++ should be observed.
++ In her 2015 book
++ The
++ Global Transformation of Time, 1870–1950,
++ Vanessa Ogle writes
++ "Outside of Europe and North America there was no system of time
++ zones at all, often not even a stable landscape of mean times,
++ prior to the middle decades of the twentieth century".
++ See: Timothy Shenk, Booked:
++ A Global History of Time. Dissent 2015-12-17.
+ tz
database relies on
++ years of first-class work done by
++ Joseph Myers and others; see
++ "History of
++ legal time in Britain".
++ Other countries are not done nearly as well.
+ 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.
++ 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.
+ 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 the
++ earliest time for which a tz
region'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 tz
regions the earliest time of
++ validity is unknown.
+ America/Kentucky/Louisville
represents a region around
+- the city of
+- Louisville, the boundaries of which are unclear.
++ The tz
database does not record a
++ region's boundaries, and in many cases the boundaries are not known.
++ For example, the tz
region
++ America/Kentucky/Louisville
represents a region
++ around the city of Louisville, the boundaries of which are
++ unclear.
+ tz
++ database were often spread out over hours, days, or even decades.
+ tz
database requires.
+ tz
code can handle.
++ For example, from 1909 to 1937 Netherlands clocks were legally Amsterdam Mean
++ Time (estimated to be UT
++ +00:19:32.13), but the tz
++ code cannot represent the fractional second.
++ In practice these old specifications were rarely if ever
++ implemented to subsecond precision.
+ 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.
+ tz
database models pre-standard time
++ using the proleptic
++ Gregorian calendar and local mean time, but many people used
++ other calendars and other timescales.
++ For example, the Roman Empire used
++ the Julian
++ calendar,
++ and Roman
++ timekeeping had twelve varying-length daytime hours with a
++ non-hour-based system at night.
+ tz
database assumes Universal Time
++ (UT) as an origin, even though UT is not
++ standardized for older timestamps.
++ In the tz
database commentary,
++ UT denotes a family of time standards that includes
++ Coordinated Universal Time (UTC) along with other
++ variants such as UT1 and GMT,
++ with days starting at midnight.
++ Although UT equals UTC for modern
++ timestamps, UTC was not defined until 1960, so
++ commentary uses the more-general abbreviation UT for
++ timestamps that might predate 1960.
++ Since UT, UT1, etc. disagree slightly,
++ and since pre-1972 UTC seconds varied in length,
++ interpretation of older timestamps can be problematic when
++ subsecond accuracy is needed.
+ 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
+-timestamps 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.
++In short, many, perhaps most, of the tz
++database's pre-1970 and future timestamps 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 tz
regions
++merely because two locations
++differ in LMT or transitioned to standard time at
++different dates.
+
+-The tz code contains time and date functions that are upwards
+-compatible with those of POSIX.
++The tz
code contains time and date functions
++that are upwards compatible with those of POSIX.
++Code compatible with this package is already
++part of many platforms, where the
++primary use of this package is to update obsolete time-related files.
++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 is occasionally extended, and a platform may still be shipping
++an older zic
.
+
+-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.
++ 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 daylight
++ saving time rules not based on the Gregorian calendar (as in
++ Iran), or with situations where more than two time zone
++ abbreviations or UT offsets are used in an area.
+
+- The POSIX TZ string takes the following form:
++ The POSIX TZ
string takes the following form:
+
+- stdoffset[dst[offset][,
date[/
time],
date[/
time]]]
++ stdoffset[dst[offset][,
date[/
time],
date[/
time]]]
+
+- where: ++ where: ++
++ +<+09>
'; this allows
+- "+
" and "-
" in the names.
++ 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 '<+09>
';
++ this allows "+
" and "-
" in the names.
+ [±]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.
++ 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.
+ /
time],
date[/
time]:
[mm[:
ss]]'
+- and defaults to 02:00.
+- This is the same format as the offset, except that a
+- leading '+
' or '-
' is not allowed.
++ 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.
+ M
m.
n.
d (0[Sunday]≤d≤6[Saturday], 1≤n≤5, 1≤m≤12)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 J
n forms are
+- rarely used.
++ origin-0 day number counting February 29 if present
+ M
m.
n.
d
++ (0[Sunday]≤d≤6[Saturday], 1≤n≤5,
++ 1≤m≤12)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 J
n forms are rarely used.
++ TZ='NZST-12NZDT,M9.5.0,M4.1.0/3'
++
++ Here is an example POSIX TZ
string for New
++ Zealand after 2007.
++ It says that standard time (NZST) is 12 hours ahead
++ of UT, and that daylight saving time
++ (NZDT) is observed from September's last Sunday at
++ 02:00 until April's first Sunday at 03:00:
++
TZ='NZST-12NZDT,M9.5.0,M4.1.0/3'
+
+- TZ='Pacific/Auckland'
++
++ This POSIX TZ
string is hard to remember, and
++ mishandles some timestamps before 2008.
++ With this package you can use this instead:
++
TZ='Pacific/Auckland'
+ 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.
++ 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.
+ TZ
environment variable is process-global, which
++ makes it hard to write efficient, thread-safe applications that
++ need access to multiple time zone rulesets.
+ TZ
environment variable.
++ While an administrator can "do everything in UT" 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.)
+ tz
regions
++ that do not fit into the POSIX model.
+ 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.
++ 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: +-
++ ++tz
code
+- 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.
++ The TZ
environment variable is used in generating
++ the name of a binary file from which time-related information is read
++ (or is interpreted à la POSIX); TZ
is no longer
++ constrained to be a three-letter time zone
++ abbreviation followed by a number of hours and an optional three-letter
++ daylight time zone abbreviation.
++ The daylight saving time rules to be used for a
++ particular tz
region are encoded in the
++ binary 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).
++ 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 binary file's 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 (à la POSIX) and "old"
++ programs (as zone names and offsets).
+
struct tm
,
+- e.g., tm_gmtoff
.
+-struct tm
, e.g., tm_zone
.
+-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
.)
+-tzalloc
, tzfree
,
+- localtime_rz
, and mktime_z
for
+- more-efficient thread-safe applications that need to use
+- multiple time zones. The tzalloc
+- and tzfree
functions allocate and free objects of
+- type timezone_t
, and localtime_rz
+- and mktime_z
are like localtime_r
+- and mktime
with an extra
+- timezone_t
argument. The functions were inspired
+- by NetBSD.
+-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.)
+-time_t
values are supported, on systems
+- where time_t
is signed.
+-struct tm
, e.g., tm_gmtoff
.
++ struct tm
, e.g., tm_zone
.
++ tzalloc
, tzfree
,
++ localtime_rz
, and mktime_z
for
++ more-efficient thread-safe applications that need to use multiple
++ time zone rulesets.
++ The tzalloc
and tzfree
functions
++ allocate and free objects of type timezone_t
,
++ and localtime_rz
and mktime_z
are
++ like localtime_r
and mktime
with an
++ extra timezone_t
argument.
++ The functions were inspired by NetBSD.
++ 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 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.)
++ time_t
values are supported, on systems
++ where time_t
is signed.
++
+-Points of interest to folks with other systems:
++POSIX and ISO C
++define some APIs that are vestigial:
++they are not needed, and are relics of a too-simple model that does
++not suffice to handle many real-world timestamps.
++Although the tz
code supports these
++vestigial APIs for backwards compatibility, they should
++be avoided in portable applications.
++The vestigial APIs are:
+
zic
' supplied with this package instead of using
+- the system 'zic
', since the format
+- of zic
's input is occasionally extended, and a
+- platform may still be shipping an older zic
.
++ The POSIX tzname
variable does not suffice and is no
++ longer needed.
++ To get a timestamp's time zone abbreviation, consult
++ the tm_zone
member if available; otherwise,
++ use strftime
's "%Z"
conversion
++ specification.
+ 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
+- localtime(&clock)->tm_zone
+- (if TM_ZONE
is defined) or
+- tzname[localtime(&clock)->tm_isdst]
+- (if HAVE_TZNAME
is defined)
+- to learn the correct time zone abbreviation to use.
++ The POSIX daylight
and timezone
++ variables do not suffice and are no longer needed.
++ To get a timestamp's UT offset, consult
++ the tm_gmtoff
member if available; otherwise,
++ subtract values returned by localtime
++ and gmtime
using the rules of the Gregorian calendar,
++ or use strftime
's "%z"
conversion
++ specification if a string like "+0900"
suffices.
+ 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.
++ The tm_isdst
member is almost never needed and most of
++ its uses should be discouraged in favor of the abovementioned
++ APIs.
++ Although it can still be used in arguments to
++ mktime
to disambiguate timestamps near
++ a DST transition when the clock jumps back, this
++ disambiguation does not work when standard time itself jumps back,
++ which can occur when a location changes to a time zone with a
++ lesser UT offset.
+ time_t
values when doing conversions for places
+- that don't use UT.
+- This package takes care to do these conversions correctly.
+- A comment in the source code tells how to get compatibly wrong
+- results.
++ The 7th Edition
++ UNIX 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 localtime(&clock)->tm_zone
++ (if TM_ZONE
is defined) or
++ tzname[localtime(&clock)->tm_isdst]
++ (if HAVE_TZNAME
is defined) to learn the correct time
++ zone abbreviation to use.
+ 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.
++ time_t
values when doing conversions
++ for places that don't use UT.
++ This package takes care to do these conversions correctly.
++ A comment in the source code tells how to get compatibly wrong
++ results.
++ 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.
++
+-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.
++The tz
code and data supply the following interfaces:
+
+-The tz code and data supply the following interfaces: +-
+tz
region names as per
++ "Names of time zone rulesets" above.
+ tzselect
, zdump
,
+- and zic
, documented in their man pages.
++ The programs tzselect
, zdump
,
++ and zic
, documented in their man pages.
+ zic
input files, documented in
+- the zic
man page.
++ The format of zic
input files, documented in
++ the zic
man page.
+ zic
output files, documented in
+- the tzfile
man page.
++ The format of zic
output files, documented in
++ the tzfile
man page.
+ zone1970.tab
.
++ The format of zone table files, documented in zone1970.tab
.
+ iso3166.tab
.
++ The format of the country code file, documented in iso3166.tab
.
+ version
' in each release.
++ The version number of the code and data, as the first line of
++ the text file 'version
' in each release.
+
+ Interface changes in a release attempt to preserve compatibility with
+-recent releases. For example, tz data files typically do not rely on
+-recently-added zic
features, so that users can run
+-older zic
versions to process newer data
+-files. Sources for time zone and daylight
+-saving time data describes how
+-releases are tagged and distributed.
++recent releases.
++For example, tz
data files typically do not
++rely on recently-added zic
features, so that users can
++run older zic
versions to process newer data files.
++Downloading
++the tz
database describes how releases
++are tagged and distributed.
+
+-Interfaces not listed above are less stable. For example, users +-should not rely on particular UT offsets or abbreviations for +-timestamps, as data entries are often based on guesswork and these +-guesses may be corrected or improved. ++Interfaces not listed above are less stable. ++For example, users should not rely on particular UT ++offsets or abbreviations for timestamps, as data entries are often ++based on guesswork and these guesses may be corrected or improved. +
+-
+ 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
++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).
+-Other information and sources are given in the file 'calendars'
+-in the tz distribution. They sometimes disagree.
++Other information and sources are given in the file 'calendars
'
++in the tz
distribution.
++They sometimes disagree.
+
+-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. ++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. ++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). ++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. ++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 ++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. ++12:00 GMT. +
+ ++ In our solar system, Mars is the planet with time and calendar most +-like Earth's. On other planets, Sun-based time and calendars would +-work quite differently. For example, although Mercury's sidereal +-rotation period is 58.646 Earth days, Mercury revolves around the Sun +-so rapidly that an observer on Mercury's equator would see a sunrise +-only every 175.97 Earth days, i.e., a Mercury year is 0.5 of a Mercury +-day. Venus is more complicated, partly because its rotation is +-slightly retrograde: its year is 1.92 of its days. Gas giants like +-Jupiter are trickier still, as their polar and equatorial regions +-rotate at different rates, so that the length of a day depends on +-latitude. This effect is most pronounced on Neptune, where the day is +-about 12 hours at the poles and 18 hours at the equator. ++like Earth's. ++On other planets, Sun-based time and calendars would work quite ++differently. ++For example, although Mercury's ++sidereal ++rotation period is 58.646 Earth days, Mercury revolves around the ++Sun so rapidly that an observer on Mercury's equator would see a ++sunrise only every 175.97 Earth days, i.e., a Mercury year is 0.5 of a ++Mercury day. ++Venus is more complicated, partly because its rotation is slightly ++retrograde: ++its year is 1.92 of its days. ++Gas giants like Jupiter are trickier still, as their polar and ++equatorial regions rotate at different rates, so that the length of a ++day depends on latitude. ++This effect is most pronounced on Neptune, where the day is about 12 ++hours at the poles and 18 hours at the equator. +
+ +
+-Although the tz database does not support time on other planets, it is
+-documented here in the hopes that support will be added eventually.
++Although the tz
database does not support
++time on other planets, it is documented here in the hopes that support
++will be added eventually.
+
+-Sources: ++Sources for time on other planets: +
++ +