TZ(5)
NAME
TZ - Time zone environment variable
SYNOPSIS
TZ=zone[-]offset[dst[offset][,start[/time],end[/time]]]
TZ=[:]zoneinfo
TZ=:zoneinfo:zone[-]offset[dst[offset][,start[/time],end[/time]]]
DESCRIPTION
The TZ environment variable tells functions such as the ctime(3) family
and programs like date what the time zone and daylight saving rules are.
The value of TZ can be in one of three forms:
The POSIX standardized form shown in the first line of the synopsis.
This form specifies the zone names, offsets from GMT, and daylight saving
changeover times for at least the current year.
The second synopsis form is for the BSD zoneinfo data files found in
/usr/lib/zoneinfo. These files contain all the information needed to
compute the offsets and daylight saving changeover times for the past
years in many different time zones. Almost all large UNIX systems use
this info.
Under Minix-vmd one should always use a POSIX style TZ value that is
valid this year. It is needed at boot time to set the clock. Once the
zoneinfo library is available the time functions will first try to use a
zoneinfo file named by the first part of the standard form,
"zone[-]offset[dst[offset]]". If that fails then "zone" is tried. One
has to make sure that the zoneinfo file selected is the correct one. If
not then one can either add a link in the zoneinfo directory to the
correct file, or one can use the third synopsis form, a Minix specific
new form that gives both a zoneinfo file name and a standard string.
POSIX standard form
zone A three or more letter name for the time zone in normal (winter)
time.
[-]offset
A signed time telling the offset of the time zone westwards from
Greenwich. The time has the form hh[:mm[:ss]] with a one of two
digit hour, and optional two digit minutes and seconds.
dst The name of the time zone when daylight saving is in effect. It may
be followed by an offset telling how big the clock correction is
other than the default of 1 hour.
start/time,end/time
Specifies the start and end of the daylight saving period. The
start and end fields indicate on what day the changeover occurs.
They must be in one of the following formats:
Jn The Julian day n (1 <= n <= 365) ignoring leap days, i.e. there
is no February 29.
n The zero-based Julian day (0 <= n <= 365). Leap days are not
ignored.
Mm.n.d
This indicates month m, the n-th occurrence of day d (1 <= m <=
12, 1 <= n <= 5, 0 <= d <= 6, 0=Sunday). The 5-th occurrence
means the last occurrence of that day in a month. So M4.1.0 is
the first Sunday in April, M9.5.0 is the last Sunday in
September.
The time field indicates the time the changeover occurs on the given
day.
EXAMPLES
Greenwich Mean Time:
TZ=GMT0
Central European Time, 1 hour east from Greenwich, daylight saving starts
on the last Sunday in March at 2 AM and ends on the last Sunday in
October at 3 AM:
TZ='CET-1CEST,M3.5.0/2,M10.5.0/3'
British time, daylight saving starts and ends at the same moment as CET,
but in an earlier time zone:
TZ=GMT0BST,M3.5.0/1,M10.5.0/2
Note that only a few European and North-American time zone names are
present in /usr/lib/zoneinfo, so for the above definition one must add a
link from Europe/London to GMT0BST in the zoneinfo directory. Otherwise
one needs to use the following Minix specific definition to let the time
library find the zoneinfo file:
TZ=:Europe/London:GMT0BST,M3.5.0/1,M10.5.0/2
U.S. Eastern Standard Time, 5 hours west from Greenwich, daylight saving
starts on the first Sunday in April at 2 AM and ends on the last Sunday
in October at 2 AM:
TZ=EST5EDT,M4.1.0/2,M10.5.0/2
It shouldn't surprise you that daylight saving in New Zealand is observed
in the months opposite from the previous examples. It starts on the
first Sunday in October at 2 AM and ends on the third Sunday in March at
3 AM:
TZ=:Pacific/Auckland:NZST-12NZDT,M10.1.0/2,M3.3.0/3
Using ln Pacific/Auckland NZST-12NZDT in /usr/lib/zoneinfo will allow one
to use the POSIX standard form.
The command zdump(8) can be used to check the TZ you are trying to put
together:
zdump -v 'TZ-string' | more
First check what the timezone library has to offer, let's try Moscow:
zdump -v Europe/Moscow | more
Then test your timezone definition with timezone names that are not in
the library, e.g.
zdump -v www-3sss,M3.5.0/2,M10.5.0/3 | more
to make sure that the definition is correct at boot time. Next make a
link if necessary and try the proper definition:
ln Europe/Moscow MOST
zdump -v MOST-3MOSST,M3.5.0/2,M10.5.0/3 | more
That definition should be put in /etc/timeinfo.
The source files used to create the time zone library are also in
/usr/lib/timeinfo in files like "europe", "asia", etc. They contain lots
of interesting comments next to the time rules.
SEE ALSO
readclock(8), date(1), utime(1), ctime(3), zic(8).
BUGS
You may have noticed that many fields are optional. Do no omit them,
because the defaults are bogus. If you need daylight saving then fully
specify the changeovers.
West is negative, east is positive, ask any sailor.
Next year's time zone and daylight saving time are determined by
politicians.
AUTHOR
Kees J. Bot (kjb@cs.vu.nl)