| TZSET(3) | Library Functions Manual | TZSET(3) | 
tzset, tzalloc,
  tzgetname, tzgetgmtoff,
  tzfree —
#include <time.h>
timezone_t
  
  tzalloc(const
    char *zone);
void
  
  tzfree(timezone_t
    restrict tz);
const char *
  
  tzgetname(timezone_t
    restrict tz, int
    isdst);
long
  
  tzgetgmtoff(timezone_t
    restrict tz, int
    isdst);
void
  
  tzset(void);
tzalloc() function takes as an argument a timezone
  name and returns a timezone_t object suitable to be used
  in the ctime_rz(),
  localtime_rz(), and mktime_z()
  functions.
If tz is not a valid timezone description,
    or if the object cannot be allocated, tzalloc()
    returns a NULL pointer and sets
    errno.
A NULL pointer may be passed to
    tzalloc() instead of a timezone name, to refer to
    the current system timezone. An empty timezone string indicates Coordinated
    Universal Time (UTC).
Note that instead of setting the environment variable
    TZ, and globally changing the behavior of the calling
    program, one can use multiple timezones at the same time by using separate
    timezone_t objects allocated by
    tzalloc() and calling the “z” variants
    of the functions. The tzfree() function deallocates
    tz, which was previously allocated by
    tzalloc(). This invalidates any
    tm_zone pointers that tz was
    used to set. The function tzgetname() returns the
    name for the given tz. If isdst
    is 0, the call is equivalent to
    tzname[0]. If isdst is set to
    1 the call is equivalent to
    tzname[1]. The return values for both
    tzgetname() and tzgmtoff()
    correspond to the latest time for which data is available, even if that
    refers to a future time. Finally, the tzgetgmtoff()
    function acts like tzgetname() only it returns the
    offset in seconds from GMT for the timezone. If there is no match, then
    -1 is returned and errno is
    set to ESRCH. The tzset()
    function acts like tzalloc(getenv("TZ")),
    except it saves any resulting timezone object into internal storage that is
    accessed by localtime(),
    localtime_r(), and mktime().
    The anonymous shared timezone object is freed by the next call to
    tzset(). If the implied call to
    tzalloc() fails, tzset()
    falls back on Universal Time (UT). If TZ is
    NULL, the best available approximation to local
    (wall clock) time, as specified by the
    tzfile(5) format file
    /etc/localtime is used by
    localtime(3). If
    TZ appears in the environment but its value is the
    empty string, UT is used, with the abbreviation “UTC” and
    without leap second correction; please see
    ctime(3). If
    TZ is nonnull and nonempty:
When TZ is used as a pathname, if it
    begins with a slash, it is used as an absolute pathname; otherwise, it is
    used as a pathname relative to /usr/share/zoneinfo.
    The file must be in the format specified in
    tzfile(5).
When TZ is used directly as a
    specification of the time conversion information, it must have the following
    syntax (spaces inserted for clarity):
stdoffset[dst[offset] [,rule] ]
where:
std
    and dststd) or the alternative
      (dst such as daylight saving time) timezone. Only
      std is required; if dst is
      missing, then daylight saving time does not apply in this locale. Upper-
      and lowercase letters are explicitly allowed. Any characters except a
      leading colon (:), digits, comma (,), minus (-), plus (+), and NUL bytes
      are allowed. Alternatively, a designation can be surrounded by angle
      brackets < and >; in
      this case, the designation can contain any characters other than
      > and NUL.offsetoffset has the
      form:
    hh[:mm[:ss] ]
The minutes (mm) and seconds
        (ss) are optional. The hour
        (hh) is required and may be a single digit. The
        offset following std is
        required. If no offset follows
        dst, daylight saving time is assumed to be one
        hour ahead of standard time. One or more digits may be used; the value
        is always interpreted as a decimal number. The hour must be between zero
        and 24, and the minutes (and seconds) – if present –
        between zero and 59. If preceded by a “-” the timezone
        shall be east of the Prime Meridian; otherwise it shall be west (which
        may be indicated by an optional preceding “+”).
rulerule has the form:
    date/time,date/time
where the first date describes when
        the change from standard to daylight saving time occurs and the second
        date describes when the change back happens.
        Each time field describes when, in current local
        time, the change to the other time is made. As an extension to POSIX,
        daylight saving is assumed to be in effect all year if it begins January
        1 at 00:00 and ends December 31 at 24:00 plus the difference between
        daylight saving and standard time, leaving no room for standard time in
        the calendar. The format of date is one of the
        following:
JnMm.n.dtime has the same format as
      offset except that POSIX does not allow a leading
      sign “-” or “+” is allowed. As an extension to
      POSIX, the hours part of time can range from -167
      through 167; this allows for unusual rules such as “the Saturday
      before the first Sunday of March”. The default, if
      time is not given, is
      02:00:00.Here are some examples of TZ values that directly specify the timezone rules; they use some of the extensions to POSIX.
If no rule is present in
    TZ, the rules specified by the
    tzfile(5) format file
    posixrules in
    /usr/share/zoneinfo are used, with the standard and
    daylight saving time offsets from UT replaced by those specified by the
    offset values in TZ.
For compatibility with System V Release 3.1, a semicolon (;) may
    be used to separate the rule from the rest of the
    specification.
If /usr/share/zoneinfo/GMT is absent, UTC leap seconds are loaded from /usr/share/zoneinfo/posixrules.
tzset() function conforms to IEEE
  Std 1003.1-1988 (“POSIX.1”).
tzgetname() nor
  tzgmtoff() functions have the ability to specify the
  point in time for which the requested data should be returned.
| July 2, 2019 | NetBSD 9.3 |