tzfile(5)


NAME

   tzfile - timezone information

DESCRIPTION

   This  page  describes  the  structure  of  the  timezone  files used by
   tzset(3).  These files are typically found under one of the directories
   /usr/lib/zoneinfo or /usr/share/zoneinfo.

   Timezone  information  files  begin with a 44-byte header structured as
   follows:

   *  The magic four-byte sequence "TZif" identifying this as  a  timezone
      information file.

   *  A  single  character  identifying  the version of the file's format:
      either an ASCII NUL ('\0') or a '2' (0x32).

   *  Fifteen bytes containing zeros reserved for future use.

   *  Six four-byte values of type long,  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 UTC/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 is  stored  in  the
             file.

      tzh_timecnt
             The  number of "transition times" for which data is stored in
             the file.

      tzh_typecnt
             The number of "local time types" for which data is stored  in
             the file (must not be zero).

      tzh_charcnt
             The  number  of characters of "timezone abbreviation strings"
             stored in the file.

   The above header is followed by tzh_timecnt four-byte  values  of  type
   long,   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.  Next
   come tzh_timecnt one-byte values of type unsigned char; each one  tells
   which  of  the  different  types of "local time" types described in the
   file is associated with the same-indexed transition time.  These values
   serve  as  indices into an array of ttinfo structures (with tzh_typecnt
   entries) that appear next in the file; these structures are defined  as
   follows:

       struct ttinfo {
           long         tt_gmtoff;
           int          tt_isdst;
           unsigned int tt_abbrind;
       };

   Each  structure  is  written as a four-byte value for tt_gmtoff of type
   long, 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  UTC,  tt_isdst
   tells  whether  tm_isdst  should be set by localtime(3), and tt_abbrind
   serves as an index into the array of timezone  abbreviation  characters
   that follow the ttinfo structure(s) in the file.

   Then  there  are  tzh_leapcnt  pairs  of  four-byte  values, written in
   standard byte order; the first value of each pair gives  the  time  (as
   returned  by  time(2))  at which a leap second occurs; the second gives
   the total number of leap seconds to be applied after  the  given  time.
   The pairs of values are sorted in ascending order by time.

   Then  there are 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 timezone file is used in handling POSIX-style
   timezone environment variables.

   Finally,  there are tzh_ttisgmtcnt UTC/local indicators, each stored as
   a one-byte value; they tell whether  the  transition  times  associated
   with local time types were specified as UTC or local time, and are used
   when  a  timezone  file  is  used  in  handling  POSIX-style   timezone
   environment variables.

   localtime(3)  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.

NOTES

   This manual page documents <tzfile.h> in the glibc source archive,  see
   timezone/tzfile.h.

   It  seems  that  timezone  uses tzfile internally, but glibc refuses to
   expose it to userspace.  This is most likely because  the  standardised
   functions  are  more  useful  and  portable, and actually documented by
   glibc.  It may  only  be  in  glibc  just  to  support  the  non-glibc-
   maintained timezone data (which is maintained by some other entity).

   Version 2 format
   For  version-2-format  timezone  files,  the  above  header and data is
   followed by a second header and data, identical in format  except  that
   eight  bytes are used for each transition time or leap-second time (and
   that the version byte in the header record is 0x32 rather  than  0x00).
   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 second section of the timezone file  consists  of  another  44-byte
   header  record,  identical  in structure to the one at the beginning of
   the file, except that it applies to the data  that  follows,  which  is
   also  identical in structure to the first section of the timezone file,
   with the following differences:

   *  The transition time values, after the header, are eight-byte values.

   *  In each leap second record, the leap second value is  an  eight-byte
      value.   The  accumulated  leap  second  count  is still a four-byte
      value.

   In all cases, the eight-byte time values are given  in  the  "standard"
   byte order, the high-order byte first.

   POSIX timezone string
   The  second  eight-byte  time  value section is followed by an optional
   third section: a single ASCII newline character  ('\n'),  then  a  text
   string  followed  by  a second newline character.  The text string is a
   POSIX timezone string, whose format is described in the tzset(3) manual
   page.

   The POSIX timezone string defines a rule for computing transition times
   that follow the  last  transition  time  explicitly  specified  in  the
   timezone information file.

   Summary of the timezone information file format

          Four-byte value section
          (header version 0x00 or 0x32)
                  Header record
                  Four-byte transition times
                  Transition time index
                  ttinfo structures
                  Timezone abbreviation array
                  Leap second records
                  Standard/Wall array
                  UTC/Local array

          Eight-byte value section
          (only if first header version is 0x32,
          the second header's version is also 0x32)
                  Header record
                  Eight-byte transition times
                  Transition time index
                  ttinfo structures
                  Timezone abbreviation array
                  Leap second records
                  Standard/Wall array
                  UTC/Local array

          Third section
          (optional, only in 0x32 version files)
                  Newline character
                  Timezone string
                  Newline character

SEE ALSO

   ctime(3), tzset(3), tzselect(8),

   timezone/tzfile.h in the glibc source tree

COLOPHON

   This  page  is  part of release 4.09 of the Linux man-pages project.  A
   description of the project, information about reporting bugs,  and  the
   latest     version     of     this    page,    can    be    found    at
   https://www.kernel.org/doc/man-pages/.

                              2015-05-07                         TZFILE(5)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.