summaryrefslogtreecommitdiff
path: root/tzfile.5.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tzfile.5.txt')
-rw-r--r--tzfile.5.txt129
1 files changed, 129 insertions, 0 deletions
diff --git a/tzfile.5.txt b/tzfile.5.txt
new file mode 100644
index 000000000000..d55ac47fcb27
--- /dev/null
+++ b/tzfile.5.txt
@@ -0,0 +1,129 @@
+TZFILE(5) File Formats Manual TZFILE(5)
+
+NAME
+ tzfile - time zone information
+
+DESCRIPTION
+ The time zone information files used by tzset(3) are typically found
+ under a directory with a name like /usr/share/zoneinfo. These files
+ begin with a 44-byte header containing the following fields:
+
+ * The magic four-byte ASCII sequence "TZif" identifies the file as a
+ time zone information file.
+
+ * A byte identifying the version of the file's format (as of 2017,
+ either an ASCII NUL, or "2", or "3").
+
+ * Fifteen bytes containing zeros reserved for future use.
+
+ * Six four-byte integer values written in a standard byte order (the
+ high-order byte of the value is written first). These values are, in
+ order:
+
+ tzh_ttisgmtcnt
+ The number of UT/local indicators stored in the file.
+
+ tzh_ttisstdcnt
+ The number of standard/wall indicators stored in the file.
+
+ tzh_leapcnt
+ The number of leap seconds for which data entries are stored
+ in the file.
+
+ tzh_timecnt
+ The number of transition times for which data entries are
+ stored in the file.
+
+ tzh_typecnt
+ The number of local time types for which data entries are
+ stored in the file (must not be zero).
+
+ tzh_charcnt
+ The number of bytes of time zone abbreviation strings stored
+ in the file.
+
+ The above header is followed by the following fields, whose lengths
+ depend on the contents of the header:
+
+ * tzh_timecnt four-byte signed integer values sorted in ascending
+ order. These values are written in standard byte order. Each is
+ used as a transition time (as returned by time(2)) at which the rules
+ for computing local time change.
+
+ * tzh_timecnt one-byte unsigned integer values; each one tells which of
+ the different types of local time types described in the file is
+ associated with the time period starting with the same-indexed
+ transition time. These values serve as indices into the next field.
+
+ * tzh_typecnt ttinfo entries, each defined as follows:
+
+ struct ttinfo {
+ int32_t tt_gmtoff;
+ unsigned char tt_isdst;
+ unsigned char tt_abbrind;
+ };
+
+ Each structure is written as a four-byte signed integer value for
+ tt_gmtoff, in a standard byte order, followed by a one-byte value for
+ tt_isdst and a one-byte value for tt_abbrind. In each structure,
+ tt_gmtoff gives the number of seconds to be added to UT, tt_isdst
+ tells whether tm_isdst should be set by localtime(3) and tt_abbrind
+ serves as an index into the array of time zone abbreviation bytes
+ that follow the ttinfo structure(s) in the file.
+
+ * tzh_leapcnt pairs of four-byte values, written in standard byte
+ order; the first value of each pair gives the nonnegative time (as
+ returned by time(2)) at which a leap second occurs; the second gives
+ the total number of leap seconds to be applied during the time period
+ starting at the given time. The pairs of values are sorted in
+ ascending order by time. Each transition is for one leap second,
+ either positive or negative; transitions always separated by at least
+ 28 days minus 1 second.
+
+ * tzh_ttisstdcnt standard/wall indicators, each stored as a one-byte
+ value; they tell whether the transition times associated with local
+ time types were specified as standard time or wall clock time, and
+ are used when a time zone file is used in handling POSIX-style time
+ zone environment variables.
+
+ * tzh_ttisgmtcnt UT/local indicators, each stored as a one-byte value;
+ they tell whether the transition times associated with local time
+ types were specified as UT or local time, and are used when a time
+ zone file is used in handling POSIX-style time zone environment
+ variables.
+
+ The localtime(3) function uses the first standard-time ttinfo structure
+ in the file (or simply the first ttinfo structure in the absence of a
+ standard-time structure) if either tzh_timecnt is zero or the time
+ argument is less than the first transition time recorded in the file.
+
+ Version 2 format
+ For version-2-format time zone files, the above header and data are
+ followed by a second header and data, identical in format except that
+ eight bytes are used for each transition time or leap second time.
+ (Leap second counts remain four bytes.) After the second header and
+ data comes a newline-enclosed, POSIX-TZ-environment-variable-style
+ string for use in handling instants after the last transition time
+ stored in the file (with nothing between the newlines if there is no
+ POSIX representation for such instants). The POSIX-style string must
+ agree with the local time type after both data's last transition times;
+ for example, given the string "WET0WEST,M3.5.0,M10.5.0/3" then if a
+ last transition time is in July, the transition's local time type must
+ specify a daylight-saving time abbreviated "WEST" that is one hour east
+ of UT.
+
+ Version 3 format
+ For version-3-format time zone files, the POSIX-TZ-style string may use
+ two minor extensions to the POSIX TZ format, as described in
+ newtzset(3). First, the hours part of its transition times may be
+ signed and range from 167 through 167 instead of the POSIX-required
+ unsigned values from 0 through 24. Second, DST is in effect all year
+ if it starts January 1 at 00:00 and ends December 31 at 24:00 plus the
+ difference between daylight saving and standard time.
+
+ Future changes to the format may append more data.
+
+SEE ALSO
+ time(2), localtime(3), tzset(3), tzselect(8), zdump(8), zic(8)
+
+ TZFILE(5)