NAME |LIBRARY |SYNOPSIS |DESCRIPTION |ENVIRONMENT |FILES |ATTRIBUTES |STANDARDS |HISTORY |CAVEATS |BUGS |SEE ALSO |COLOPHON | |
tzset(3) Library Functions Manualtzset(3)tzset, tzname, timezone, daylight - initialize time conversion information
Standard C library (libc,-lc)
#include <time.h>void tzset(void);extern char *tzname[2];extern longtimezone;extern intdaylight; Feature Test Macro Requirements for glibc (seefeature_test_macros(7)):tzset(): _POSIX_C_SOURCEtzname: _POSIX_C_SOURCEtimezone,daylight: _XOPEN_SOURCE || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE
Thetzset() function initializes thetzname variable from theTZ environment variable. This function is automatically called by the other time conversion functions that depend on the timezone. In a System-V-like environment, it will also set the variablestimezone (seconds West of UTC) anddaylight (to 0 if this timezone does not have any daylight saving time rules, or to nonzero if there is a time, past, present, or future when daylight saving time applies). Thetzset() function initializes these variables to unspecified values if this timezone is a geographical timezone like "America/New_York" (see below). If theTZvariable does not appear in the environment, the system timezone is used. The system timezone is configured by copying, or linking, a file in thetzfile(5) format to/etc/localtime. A timezone database of these files may be located in the system timezone directory (see theFILESsection below). If theTZvariable does appear in the environment, but its value is empty, or its value cannot be interpreted using any of the formats specified below, then Coordinated Universal Time (UTC) is used. A nonempty value ofTZcan be one of two formats, either of which can be preceded by a colon which is ignored. The first format is a string of characters that directly represent the timezone to be used:std offset[dst[offset][,start[/time],end[/time]]] There are no spaces in the specification. Thestd string specifies an abbreviation for the timezone and must be three or more alphabetic characters. When enclosed between the less-than (<) and greater-than (>) signs, the character set is expanded to include the plus (+) sign, the minus (-) sign, and digits. Theoffset string immediately followsstd and specifies the time value to be added to the local time to get Coordinated Universal Time (UTC). Theoffset is positive if the local timezone is west of the Prime Meridian and negative if it is east. The hour must be between 0 and 24, and the minutes and seconds 00 and 59: [+|-]hh[:mm[:ss]] Thedst string andoffset specify the name and offset for the corresponding daylight saving timezone. If the offset is omitted, it defaults to one hour ahead of standard time. Thestart field specifies when daylight saving time goes into effect and theend field specifies when the change is made back to standard time. These fields may have the following formats: Jn This specifies the Julian day withn between 1 and 365. Leap days are not counted. In this format, February 29 can't be represented; February 28 is day 59, and March 1 is always day 60.n This specifies the zero-based Julian day withn between 0 and 365. February 29 is counted in leap years. Mm.w.d This specifies dayd (0 <=d <= 6) of weekw (1 <=w <= 5) of monthm (1 <=m <= 12). Week 1 is the first week in which dayd occurs and week 5 is the last week in which dayd occurs. Day 0 is a Sunday. Thetime fields specify when, in the local time currently in effect, the change to the other time occurs. They use the same format asoffset except that the hour can be in the range [-167,167] to represent times before and after the named day. If omitted, the default is 02:00:00. Here is an example for New Zealand, where the standard time (NZST) is 12 hours ahead of UTC, and daylight saving time (NZDT), 13 hours ahead of UTC, runs from September's last Sunday, at the default time 02:00:00, to April's first Sunday at 03:00:00. TZ="NZST-12:00:00NZDT-13:00:00,M9.5.0,M4.1.0/3" The second —or "geographical"— format specifies that the timezone information should be read from a file: filespec Thefilespec specifies atzfile(5)-format file to read the timezone information from. Iffilespec does not begin with a '/', the file specification is relative to the system timezone directory. If the specified file cannot be read or interpreted, Coordinated Universal Time (UTC) is used; however, applications should not depend on randomfilespec values standing for UTC, asTZformats may be extended in the future. Here's an example, once more for New Zealand: TZ="Pacific/Auckland"
TZIf this variable is set its value takes precedence over the system configured timezone.TZDIRIf this variable is set its value takes precedence over the system configured timezone database directory path.
/etc/localtime The system timezone file./usr/share/zoneinfo/ The system timezone database directory./usr/share/zoneinfo/posixrules When a TZ string includes a dst timezone without anything following it, then this file is used for the start/end rules. It is in thetzfile(5) format. By default, the zoneinfo Makefile hard links it to theAmerica/New_York tzfile. Above are the current standard file locations, but they are configurable when glibc is compiled.
For an explanation of the terms used in this section, seeattributes(7). ┌───────────────────────────┬───────────────┬────────────────────┐ │Interface│Attribute│Value│ ├───────────────────────────┼───────────────┼────────────────────┤ │tzset() │ Thread safety │ MT-Safe env locale │ └───────────────────────────┴───────────────┴────────────────────┘
POSIX.1-2024.
tzset()tzname POSIX.1-1988, SVr4, 4.3BSD.timezonedaylight POSIX.1-2001 (XSI), SVr4, 4.3BSD. 4.3BSD had a functionchar *timezone(zone,dst)that returned the name of the timezone corresponding to its first argument (minutes West of UTC). If the second argument was 0, the standard name was used, otherwise the daylight saving time version.
Because the values oftzname,timezone, anddaylight are often unspecified, and accessing them can lead to undefined behavior in multithreaded applications, code should instead obtain time zone offset and abbreviations from thetm_gmtoff andtm_zone members of the broken-down time structuretm(3type).
Since this function does not report errors, there's no way to know if the value of TZ represents a valid time zone.
date(1),gettimeofday(2),time(2),ctime(3),getenv(3),tzfile(5)
This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up- to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-05-17tzset(3)Pages that refer to this page:homectl(1), pmlogrewrite(1), gettimeofday(2), ctime(3), timegm(3), tm(3type), localtime(5), tzfile(5), environ(7), anacron(8), hwclock(8)
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |