p The above header is followed by .Va tzh_timecnt four-byte signed integer values sorted in ascending order. These values are written in These values are written in .Dq standard byte order. Each is used as a transition time (as returned by .Xr time 3 ) at which the rules for computing local time change. Next come .Va tzh_timecnt one-byte unsigned integer values; each one tells which of the different types of .Dq local time types described in the file is associated with the same-indexed transition time. These values serve as indices into an array of .Fa ttinfo structures (with .Va tzh_typecnt entries) that appears next in the file; these structures are defined as follows: d -literal struct ttinfo { int32_t tt_gmtoff; unsigned char tt_isdst; unsigned char tt_abbrind; }; .Ed Each structure is written as a four-byte signed integer value for .Va tt_gmtoff in a standard byte order, followed by a one-byte value for .Va tt_isdst and a one-byte value for .Va tt_abbrind . In each structure, .Va tt_gmtoff gives the number of seconds to be added to UT, .Va tt_isdst tells whether .Va tm_isdst should be set by .Xr localtime 3 and .Va tt_abbrind serves as an index into the array of time zone abbreviation characters that follow the .Va ttinfo structure(s) in the file.
p Then there are .Va tzh_leapcnt pairs of four-byte values, written in standard byte order; the first value of each pair gives the time (as returned by .Xr time 3 ) at which a leap second occurs; the second gives the .Em total number of leap seconds to be applied after the given time. The pairs of values are sorted in ascending order by time.
p Then there are .Va 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.
p Finally there are .Va 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.
p .Xr localtime 3 uses the first standard-time .Fa ttinfo structure in the file (or simply the first .Fa ttinfo structure in the absence of a standard-time structure) if either .Va tzh_timecnt is zero or the time argument is less than the first transition time recorded in the file.
p 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. 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).
p 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 .Xr tzset 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.
p
Future changes to the format may append more data.
.Sh SEE ALSO
.Xr ctime 3 ,
.Xr localtime 3 ,
.Xr time 3 ,
.Xr tzset 3 ,
.Xr zdump 8
.Xr zic 8
@(#)tzfile.5 8.3
This file is in the public domain, so clarified as of
1996-06-05 by Arthur David Olson.