| .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) |
| .\" |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" |
| .\" References consulted: |
| .\" Linux libc source code |
| .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) |
| .\" 386BSD man pages |
| .\" Modified Sun Jul 25 11:01:58 1993 by Rik Faith (faith@cs.unc.edu) |
| .\" Modified 2001-11-13, aeb |
| .\" Modified 2004-12-01 mtk and Martin Schulze <joey@infodrom.org> |
| .\" |
| .TH TZSET 3 2012-03-25 "" "Linux Programmer's Manual" |
| .SH NAME |
| tzset, tzname, timezone, daylight \- initialize time conversion information |
| .SH SYNOPSIS |
| .nf |
| .B #include <time.h> |
| .sp |
| .B void tzset (void); |
| .sp |
| .BI "extern char *" tzname [2]; |
| .BI "extern long " timezone ; |
| .BI "extern int " daylight ; |
| .fi |
| .sp |
| .in -4n |
| Feature Test Macro Requirements for glibc (see |
| .BR feature_test_macros (7)): |
| .in |
| .sp |
| .BR tzset (): |
| _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE |
| .br |
| .IR tzname : |
| _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE |
| .br |
| .IR timezone : |
| _SVID_SOURCE || _XOPEN_SOURCE |
| .br |
| .IR daylight : |
| _SVID_SOURCE || _XOPEN_SOURCE |
| .SH DESCRIPTION |
| The |
| .BR tzset () |
| function initializes the \fItzname\fP variable from the |
| .B TZ |
| 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 variables \fItimezone\fP |
| (seconds West of UTC) and \fIdaylight\fP (to 0 if this timezone does not |
| have any daylight saving time rules, or to nonzero if there is a time during |
| the year when daylight saving time applies). |
| .PP |
| If the |
| .B TZ |
| variable does not appear in the environment, the \fItzname\fP |
| variable is initialized with the best approximation of local wall clock |
| time, as specified by the |
| .BR tzfile (5)-format |
| file \fIlocaltime\fP |
| found in the system timezone directory (see below). |
| (One also often sees |
| .I /etc/localtime |
| used here, a symlink to the right file in the system timezone directory.) |
| .PP |
| If the |
| .B TZ |
| variable does appear in the environment but its value is empty |
| or its value cannot be interpreted using any of the formats specified |
| below, Coordinated Universal Time (UTC) is used. |
| .PP |
| The value of |
| .B TZ |
| can be one of three formats. |
| The first format is used |
| when there is no daylight saving time in the local timezone: |
| .sp |
| .RS |
| .I std offset |
| .RE |
| .sp |
| The \fIstd\fP string specifies the name of the timezone and must be |
| three or more alphabetic characters. |
| The \fIoffset\fP string immediately |
| follows \fIstd\fP and specifies the time value to be added to the local |
| time to get Coordinated Universal Time (UTC). |
| The \fIoffset\fP 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 |
| 0 and 59. |
| .PP |
| The second format is used when there is daylight saving time: |
| .sp |
| .RS |
| .I std offset dst [offset],start[/time],end[/time] |
| .RE |
| .sp |
| There are no spaces in the specification. |
| The initial \fIstd\fP and |
| \fIoffset\fP specify the standard timezone, as described above. |
| The \fIdst\fP string and \fIoffset\fP specify the name and offset for the |
| corresponding daylight saving timezone. |
| If the offset is omitted, |
| it default to one hour ahead of standard time. |
| .PP |
| The \fIstart\fP field specifies when daylight saving time goes into |
| effect and the \fIend\fP field specifies when the change is made back to |
| standard time. |
| These fields may have the following formats: |
| .TP |
| J\fIn\fP |
| This specifies the Julian day with \fIn\fP 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. |
| .TP |
| .I n |
| This specifies the zero-based Julian day with \fIn\fP between 0 and 365. |
| February 29 is counted in leap years. |
| .TP |
| M\fIm\fP.\fIw\fP.\fId\fP |
| This specifies day \fId\fP (0 <= \fId\fP <= 6) of week \fIw\fP |
| (1 <= \fIw\fP <= 5) of month \fIm\fP (1 <= \fIm\fP <= 12). |
| Week 1 is |
| the first week in which day \fId\fP occurs and week 5 is the last week |
| in which day \fId\fP occurs. |
| Day 0 is a Sunday. |
| .PP |
| The \fItime\fP fields specify when, in the local time currently in effect, |
| the change to the other time occurs. |
| 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 the first Sunday in October to the third Sunday in March, |
| and the changeovers happen at the default time of 02:00:00: |
| .nf |
| |
| TZ="NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0" |
| .fi |
| .PP |
| The third format specifies that the timezone information should be read |
| from a file: |
| .sp |
| .RS |
| :[filespec] |
| .RE |
| .sp |
| If the file specification \fIfilespec\fP is omitted, the timezone |
| information is read from the file |
| .I localtime |
| in the system timezone directory, which nowadays usually is |
| .IR /usr/share/zoneinfo . |
| This file is in |
| .BR tzfile (5) |
| format. |
| If \fIfilespec\fP is given, it specifies another |
| .BR tzfile (5)-format |
| file to read the timezone information from. |
| If \fIfilespec\fP does not begin with a \(aq/\(aq, the file specification is |
| relative to the system timezone directory. |
| .PP |
| Here's an example, once more for New Zealand: |
| .nf |
| |
| TZ=":Pacific/Auckland" |
| .fi |
| .SH FILES |
| The system timezone directory used depends on the (g)libc version. |
| Libc4 and libc5 use |
| .IR /usr/lib/zoneinfo , |
| and, since libc-5.4.6, |
| when this doesn't work, will try |
| .IR /usr/share/zoneinfo . |
| Glibc2 will use the environment variable |
| .BR TZDIR , |
| when that exists. |
| Its default depends on how it was installed, but normally is |
| .IR /usr/share/zoneinfo . |
| .LP |
| This timezone directory contains the files |
| .nf |
| localtime local timezone file |
| posixrules rules for POSIX-style TZ's |
| .fi |
| .LP |
| Often |
| .I /etc/localtime |
| is a symlink to the file |
| .I localtime |
| or to the correct timezone file in the system timezone directory. |
| .SH "CONFORMING TO" |
| SVr4, POSIX.1-2001, 4.3BSD. |
| .SH NOTES |
| Note that the variable \fIdaylight\fP does not indicate that daylight |
| saving time applies right now. |
| It used to give the number of some |
| algorithm (see the variable \fItz_dsttime\fP in |
| .BR gettimeofday (2)). |
| It has been obsolete for many years but is required by SUSv2. |
| .LP |
| 4.3BSD had a function |
| .BI "char *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. |
| .SH "SEE ALSO" |
| .BR date (1), |
| .BR gettimeofday (2), |
| .BR time (2), |
| .BR ctime (3), |
| .BR getenv (3), |
| .BR tzfile (5) |