809 lines
34 KiB
Plaintext
809 lines
34 KiB
Plaintext
@database tzc.guide
|
|
@author Carsten Larsen
|
|
@(c) Carsten Larsen
|
|
@$VER: tz.guide 5.00 (15.10.2016)
|
|
@node Main "Amiga time zone database"
|
|
@title "Amiga time zone database"
|
|
|
|
"What time is it?" -- Richard Deacon as The King
|
|
"Any time you want it to be." -- Frank Baxter as The Scientist
|
|
(from the Bell System film "About Time")
|
|
|
|
The Time Zone Database (often called tz or zoneinfo) contains code and data that
|
|
represent the history of local time for many representative locations around the
|
|
globe. It is updated periodically to reflect changes made by political bodies to
|
|
time zone boundaries, UTC offsets, and daylight-saving rules.
|
|
|
|
@{b}USER MANUALS@{ub}
|
|
|
|
@{"Install " link "Install"} Install Amiga time zone database
|
|
@{"TimeZone " link "TimeZone"} Select a time zone
|
|
@{"TimeZoneInfo " link "TimeZoneInfo"} Show active time zone
|
|
@{"SetClockGMT " link "SetClockGMT"} Set battery backed-up hardware clock in GMT
|
|
@{"DSTCheck " link "DSTCheck"} Warn when daylight saving time changes
|
|
@{"ZDump " link "ZDump"} Time zone dumper
|
|
|
|
@{b}DEVELOPER MANUALS@{ub}
|
|
|
|
@{"Library " link "library"} Time zone library
|
|
@{"Zic " link "zic"} Time zone compiler
|
|
@{"tzfile " link "tzfile"} Time zone information
|
|
|
|
@{b}PROJECT MANUALS@{ub}
|
|
|
|
@{"Contributing " link "CONTRIBUTING"} Contributing to the tz code and data
|
|
@{"License " link "LICENSE"} Authors and terms
|
|
|
|
@endnode
|
|
@node Install "Install Amiga time zone database"
|
|
@title "Install Amiga time zone database"
|
|
|
|
@{b}INSTALL@{ub}
|
|
|
|
Minimum
|
|
|
|
* Copy timezone.library to Libs:
|
|
* Assign ZONEINFO: to your zoneinfo directory
|
|
* Copy zoneinfo from tzdata.lha to ZONEINFO:
|
|
|
|
Optionally
|
|
|
|
* Copy SetClockGMT to your systems C:
|
|
* Copy TimeZone to your systems SYS:Prefs
|
|
* Assign ZONEINFO: to LOCALE:Zoneinfo in S:Startup-Sequence
|
|
* Add SetClockGMT <NIL: >NIL: LOAD to end of S:Startup-Sequence
|
|
|
|
@{b}SETUP@{ub}
|
|
|
|
Select a time zone in TimeZone GUI:
|
|
TimeZone
|
|
|
|
Save GMT time to RTC (hardware) clock:
|
|
SetClockGMT SAVE
|
|
|
|
Load GMT time to locale timezone:
|
|
Add SetClockGMT LOAD to end of S:Startup-Sequence
|
|
|
|
Validate time zone preferences in shell:
|
|
TimeZoneInfo
|
|
|
|
Show time in other time zones:
|
|
Execute script/Show
|
|
|
|
|
|
|
|
@endnode
|
|
@node LICENSE "License and credits"
|
|
@title "License and credits"
|
|
|
|
@{b}LICENSE AND CREDITS@{ub}
|
|
|
|
Unless otherwise specified, all files in the tz code and data are in the public
|
|
domain, so clarified as of 2009-05-17 by Arthur David Olson. The few exceptions
|
|
are code derived from BSD, which uses the BSD license.
|
|
|
|
Thanks to these Time Zone Caballeros who've made major contributions to the time
|
|
conversion package: Keith Bostic; Bob Devine; Paul Eggert; Robert Elz; Guy Harris;
|
|
Mark Horton; John Mackin; and Bradley White.
|
|
|
|
Thanks also to Michael Bloom, Art Neilson, Stephen Prince, John Sovereign, and
|
|
Frank Wales for testing work, and to Gwillim Law for checking local mean time
|
|
data. Thanks in particular to Arthur David Olson, the project's founder and first
|
|
maintainer, to whom the time zone community owes the greatest debt of all.
|
|
|
|
None of them are responsible for remaining errors.
|
|
|
|
|
|
@endnode
|
|
@node CONTRIBUTING "Contributing to the tz code and data"
|
|
@title "Contributing to the tz code and data"
|
|
@{bg filltext}@{b}Contributing Contributing@{ub}@{bg background}
|
|
|
|
@{b}Contributing to the tz code and data (Non-Amiga specific)@{ub}
|
|
|
|
The time zone database is by no means authoritative: governments change timekeeping
|
|
rules erratically and sometimes with little warning, the data entries do not cover
|
|
all of civil time before 1970, and undoubtedly errors remain in the code and data.
|
|
Feel free to fill gaps or fix mistakes, and please email improvements to
|
|
tz@iana.org for use in the future.
|
|
|
|
To email small changes, please run a POSIX shell command like
|
|
'diff -u old/europe new/europe >myfix.patch', and attach
|
|
myfix.patch to the email.
|
|
|
|
For more-elaborate changes, please read the Theory file and browse the mailing list
|
|
archives <http://mm.icann.org/pipermail/tz/> for examples of patches that tend to
|
|
work well. Ideally, additions to data should contain commentary citing reliable
|
|
sources as justification.
|
|
|
|
Please submit changes against either the latest release in
|
|
<ftp://ftp.iana.org/tz/> or the master branch of the experimental Git repository.
|
|
|
|
If you use Git the following workflow may be helpful:
|
|
|
|
* Copy the experimental repository.
|
|
|
|
git clone https://github.com/eggert/tz.git
|
|
cd tz
|
|
|
|
* Get current with the master branch.
|
|
|
|
git checkout master
|
|
git pull
|
|
|
|
* Switch to a new branch for the changes. Choose a different
|
|
branch name for each change set.
|
|
|
|
git checkout -b mybranch
|
|
|
|
* Edit source files. Include commentary that justifies the
|
|
changes by citing reliable sources.
|
|
|
|
* Debug the changes, e.g.:
|
|
|
|
make check
|
|
make install
|
|
./zdump -v America/Los_Angeles
|
|
|
|
* For each separable change, commit it in the new branch, e.g.:
|
|
|
|
git add northamerica
|
|
git commit
|
|
|
|
See recent 'git log' output for the commit-message style.
|
|
|
|
* Create patch files 0001-*, 0002-*, ...
|
|
|
|
git format-patch master
|
|
|
|
* After reviewing the patch files, send the patches to tz@iana.org
|
|
for others to review.
|
|
|
|
git send-email master
|
|
|
|
* Start anew by getting current with the master branch again
|
|
(the second step above).
|
|
|
|
Please do not create issues or pull requests on GitHub, as the proper procedure for
|
|
proposing and distributing patches is via email as illustrated above.
|
|
|
|
|
|
|
|
@endnode
|
|
@node TimeZone "TimeZone user manual"
|
|
@title "TimeZone user manual"
|
|
@{bg filltext}@{b}TimeZone TimeZone@{ub}@{bg background}
|
|
|
|
@{b}NAME@{ub}
|
|
TimeZone - select a time zone
|
|
|
|
@{b}USAGE@{ub}
|
|
TimeZone
|
|
|
|
@{b}DESCRIPTION@{ub}
|
|
TimeZone is used to set local time zone preferences. Time zone can be
|
|
selected from a set of predefined zone files. The selected zone need to
|
|
be located in the ZONEINFO: directory.
|
|
|
|
The time zone name will be save to the TZ environment variable if selected.
|
|
Do not choose this option if you already have a rule in your TZ variable.
|
|
|
|
|
|
@endnode
|
|
@node TimeZoneInfo "TimeZoneInfo user manual"
|
|
@title "TimeZoneInfo user manual"
|
|
@{bg filltext}@{b}TimeZoneInfo TimeZoneInfo@{ub}@{bg background}
|
|
|
|
@{b}NAME@{ub}
|
|
TimeZoneInfo - Show active time zone
|
|
|
|
@{b}USAGE@{ub}
|
|
TimeZoneInfo
|
|
|
|
@{b}DESCRIPTION@{ub}
|
|
TimeZoneInfo lists the most important properties of the active time
|
|
zone.
|
|
|
|
|
|
@endnode
|
|
@node SetClockGMT "SetClockGMT user manual"
|
|
@title "SetClockGMT user manual"
|
|
@{bg filltext}@{b}SetClockGMT SetClockGMT@{ub}@{bg background}
|
|
|
|
@{b}NAME@{ub}
|
|
SetClockGMT - Set or read the battery backed-up hardware clock in GMT
|
|
|
|
@{b}USAGE@{ub}
|
|
SetClockGMT LOAD|SAVE|RESET
|
|
|
|
@{b}DESCRIPTION@{ub}
|
|
SetClockGMT SAVE sets the date and time of the battery backed-up
|
|
hardware clock from the current system time and adjust it according
|
|
to locale time zone. In order for SetClockGMT to operate correct, a
|
|
local time zone need to be selected first.
|
|
|
|
SetClockGMT LOAD sets the current system time in locale time zone
|
|
from the battery backed-up clock. In systems using Kickstart 2.0 or
|
|
later, the time is set automatically during the boot process.
|
|
|
|
SetClockGMT LOAD need to executed after boot in order to active locale
|
|
time zone.
|
|
|
|
The RESET option resets the clock completely. This may be necessary if
|
|
a poorly written program that does not follow the rules turns the clock
|
|
off or sets the test bit of the clock.
|
|
|
|
|
|
@endnode
|
|
@node DSTCheck "DSTCheck user manual"
|
|
@title "DSTCheck user manual"
|
|
@{bg filltext}@{b}DSTCheck DSTCheck@{ub}@{bg background}
|
|
|
|
@{b}NAME@{ub}
|
|
DSTCheck - Warn when daylight saving time changes
|
|
|
|
@{b}USAGE@{ub}
|
|
DSTCheck
|
|
|
|
@{b}DESCRIPTION@{ub}
|
|
DSTCheck can be used in scripts to track when daylight saving time
|
|
changes.
|
|
|
|
@{b}EXAMPLE@{ub}
|
|
DSTCheck
|
|
IF WARN
|
|
echo "### Summertime ###"
|
|
ELSE
|
|
echo "### Wintertime ###"
|
|
ENDIF
|
|
|
|
|
|
@endnode
|
|
@node library "Timezone Library"
|
|
@title "Timezone Library"
|
|
|
|
@{b}timezone.library@{ub}
|
|
|
|
Version 5 of the Timezone Library implements the following functions.
|
|
|
|
time.h tzset, tzalloc, tzfree, time, mktime, mktime_z, localtime, localtime_r,
|
|
localtime_rz, gmtime, gmtime_r, ctime, ctime_r, ctime_rz, difftime,
|
|
offtime, offtime_r, timeoff, asctime, asctime_r, strftime, strftime_l,
|
|
strptime, strptime_l, timegm, timelocal, timelocal_z, daylight_c,
|
|
timezone_c, altzone_c, tzname_c, time2posix, time2posix_z, posix2time,
|
|
posix2time_z, tzsetwall, tzgetname
|
|
sys/time.h gettimeofday, settimeofday
|
|
extra getsystime, setsystime, tzgetlocation, gmtoffset, stou, utos
|
|
|
|
@endnode
|
|
@node ZDump "ZDump user manual"
|
|
@title "ZDump user manual"
|
|
@{bg filltext}@{b}ZDump ZDump@{ub}@{bg background}
|
|
|
|
@{b}NAME@{ub}
|
|
ZDump - time zone dumper
|
|
|
|
@{b}USAGE@{ub}
|
|
ZDump [VERBOSE|VERBOSE2] [C=CUTOFF] [T=CUTOFFVERBOSE] { zonenames }
|
|
|
|
@{b}DESCRIPTION@{ub}
|
|
ZDump prints the current time in each zonename named on the command
|
|
line.
|
|
|
|
@{b}OPTIONS@{ub}
|
|
|
|
VERBOSE
|
|
For each zonename on the command line, print the time at the
|
|
lowest possible time value, the time one day after the lowest
|
|
possible time value, the times both one second before and
|
|
exactly at each detected time discontinuity, the time at one day
|
|
less than the highest possible time value, and the time at the
|
|
highest possible time value. Each line is followed by isdst=D
|
|
where D is positive, zero, or negative depending on whether the
|
|
given time is daylight saving time, standard time, or an unknown
|
|
time type, respectively. Each line is also followed by gmtoff=N
|
|
if the given local time is known to be N seconds east of
|
|
Greenwich.
|
|
|
|
VERBOSE2
|
|
Like -v, except omit the times relative to the extreme time
|
|
values. This generates output that is easier to compare to that
|
|
of implementations with different time representations.
|
|
|
|
CUTOFF [loyear,]hiyear
|
|
Cut off verbose output at the given year(s). Cutoff times are
|
|
computed using the proleptic Gregorian calendar with year 0 and
|
|
with Universal Time (UT) ignoring leap seconds. The lower bound
|
|
is exclusive and the upper is inclusive; for example, a loyear
|
|
of 1970 excludes a transition occurring at 1970-01-01 00:00:00
|
|
UTC but a hiyear of 1970 includes the transition. The default
|
|
cutoff is -500,2500.
|
|
|
|
CUTOFFVERBOSE [lotime,]hitime
|
|
Cut off verbose output at the given time(s), given in decimal
|
|
seconds since 1970-01-01 00:00:00 Coordinated Universal Time
|
|
(UTC). The zonename determines whether the count includes leap
|
|
seconds. As with -c, the cutoff's lower bound is exclusive and
|
|
its upper bound is inclusive.
|
|
|
|
@{b}LIMITATIONS@{ub}
|
|
Time discontinuities are found by sampling the results returned by
|
|
localtime at twelve-hour intervals. This works in all real-world
|
|
cases; one can construct artificial time zones for which this fails.
|
|
|
|
In the output, "UT" denotes the value returned by gmtime, which uses
|
|
UTC for modern time stamps and some other UT flavor for time stamps
|
|
that predate the introduction of UTC. No attempt is currently made
|
|
to have the output use "UTC" for newer and "UT" for older time stamps,
|
|
partly because the exact date of the introduction of UTC is
|
|
problematic.
|
|
|
|
@{b}SEE ALSO@{ub}
|
|
@{"tzfile" link "tzfile"}, @{"zic" link "zic"}
|
|
|
|
|
|
@endnode
|
|
@node zic "zic developer manual"
|
|
@title "Time zone compiler"
|
|
@{bg filltext}@{b}ZIC ZIC@{ub}@{bg background}
|
|
|
|
@{b}NAME@{ub}
|
|
zic - time zone compiler
|
|
|
|
@{b}USAGE@{ub}
|
|
zic [ option ... ] [ filename ... ]
|
|
|
|
@{b}DESCRIPTION@{ub}
|
|
Zic reads text from the file(s) named on the command line and creates
|
|
the time conversion information files specified in this input. If a
|
|
filename is "-", the standard input is read.
|
|
|
|
@{b}OPTIONS@{ub}
|
|
These options are available:
|
|
|
|
--version
|
|
Output version information and exit.
|
|
|
|
-d directory
|
|
Create time conversion information files in the named directory
|
|
rather than in the standard directory named below.
|
|
|
|
-l timezone
|
|
Use the given time zone as local time. Zic will act as if the
|
|
input contained a link line of the form
|
|
|
|
Link timezone localtime
|
|
|
|
-p timezone
|
|
Use the given time zone's rules when handling POSIX-format time
|
|
zone environment variables. Zic will act as if the input
|
|
contained a link line of the form
|
|
|
|
Link timezone posixrules
|
|
|
|
-L leapsecondfilename
|
|
Read leap second information from the file with the given name.
|
|
If this option is not used, no leap second information appears
|
|
in output files.
|
|
|
|
-v Be more verbose, and complain about the following situations:
|
|
|
|
The input specifies a link to a link.
|
|
|
|
A year that appears in a data file is outside the range of years
|
|
representable by time(2) values.
|
|
|
|
A time of 24:00 or more appears in the input. Pre-1998 versions
|
|
of zic prohibit 24:00, and pre-2007 versions prohibit times
|
|
greater than 24:00.
|
|
|
|
A rule goes past the start or end of the month. Pre-2004
|
|
versions of zic prohibit this.
|
|
|
|
The output file does not contain all the information about the
|
|
long-term future of a zone, because the future cannot be
|
|
summarized as an extended POSIX TZ string. For example, as of
|
|
2013 this problem occurs for Iran's daylight-saving rules for
|
|
the predicted future, as these rules are based on the Iranian
|
|
calendar, which cannot be represented.
|
|
|
|
The output contains data that may not be handled properly by
|
|
client code designed for older zic output formats. These
|
|
compatibility issues affect only time stamps before 1970 or
|
|
after the start of 2038.
|
|
|
|
A time zone abbreviation has fewer than 3 characters. POSIX
|
|
requires at least 3.
|
|
|
|
An output file name contains a byte that is not an ASCII letter,
|
|
"-", "/", or "_"; or it contains a file name component that
|
|
contains more than 14 bytes or that starts with "-".
|
|
|
|
-s Limit time values stored in output files to values that are the
|
|
same whether they're taken to be signed or unsigned. You can
|
|
use this option to generate SVVS-compatible files.
|
|
|
|
-y command
|
|
Use the given command rather than yearistype when checking year
|
|
types (see below).
|
|
|
|
Input files should be text files, that is, they should be a series of
|
|
zero or more lines, each ending in a newline byte and containing at
|
|
most 511 bytes, and without any NUL bytes. The input text's encoding
|
|
is typically UTF-8 or ASCII; it should have a unibyte representation
|
|
for the POSIX Portable Character Set (PPCS) <http://pubs.opengroup.org/
|
|
onlinepubs/9699919799/basedefs/V1_chap06.html> and the encoding's non-
|
|
unibyte characters should consist entirely of non-PPCS bytes. Non-PPCS
|
|
characters typically occur only in comments: although output file names
|
|
and time zone abbreviations can contain nearly any character, other
|
|
software will work better if these are limited to the restricted syntax
|
|
described under the -v option.
|
|
|
|
Input lines are made up of fields. Fields are separated from one
|
|
another by one or more white space characters. The white space
|
|
characters are space, form feed, carriage return, newline, tab, and
|
|
vertical tab. Leading and trailing white space on input lines is
|
|
ignored. An unquoted sharp character (#) in the input introduces a
|
|
comment which extends to the end of the line the sharp character
|
|
appears on. White space characters and sharp characters may be
|
|
enclosed in double quotes (") if they're to be used as part of a field.
|
|
Any line that is blank (after comment stripping) is ignored. Non-blank
|
|
lines are expected to be of one of three types: rule lines, zone lines,
|
|
and link lines.
|
|
|
|
Names (such as month names) must be in English and are case
|
|
insensitive. Abbreviations, if used, must be unambiguous in context.
|
|
|
|
A rule line has the form
|
|
|
|
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
|
|
For example:
|
|
|
|
Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
|
|
|
|
The fields that make up a rule line are:
|
|
|
|
NAME Gives the (arbitrary) name of the set of rules this rule is
|
|
part of.
|
|
|
|
FROM Gives the first year in which the rule applies. Any integer
|
|
year can be supplied; the proleptic Gregorian calendar is
|
|
assumed. The word minimum (or an abbreviation) means the
|
|
minimum year representable as an integer. The word maximum (or
|
|
an abbreviation) means the maximum year representable as an
|
|
integer. Rules can describe times that are not representable
|
|
as time values, with the unrepresentable times ignored; this
|
|
allows rules to be portable among hosts with differing time
|
|
value types.
|
|
|
|
TO Gives the final year in which the rule applies. In addition to
|
|
minimum and maximum (as above), the word only (or an
|
|
abbreviation) may be used to repeat the value of the FROM
|
|
field.
|
|
|
|
TYPE Gives the type of year in which the rule applies. If TYPE is
|
|
"-" then the rule applies in all years between FROM and TO
|
|
inclusive. If TYPE is something else, then zic executes the
|
|
command
|
|
yearistype year type
|
|
to check the type of a year: an exit status of zero is taken to
|
|
mean that the year is of the given type; an exit status of one
|
|
is taken to mean that the year is not of the given type.
|
|
|
|
IN Names the month in which the rule takes effect. Month names
|
|
may be abbreviated.
|
|
|
|
ON Gives the day on which the rule takes effect. Recognized forms
|
|
include:
|
|
|
|
5 the fifth of the month
|
|
lastSun the last Sunday in the month
|
|
lastMon the last Monday in the month
|
|
Sun>=8 first Sunday on or after the eighth
|
|
Sun<=25 last Sunday on or before the 25th
|
|
|
|
Names of days of the week may be abbreviated or spelled out in
|
|
full. Note that there must be no spaces within the ON field.
|
|
|
|
AT Gives the time of day at which the rule takes effect.
|
|
Recognized forms include:
|
|
|
|
2 time in hours
|
|
2:00 time in hours and minutes
|
|
15:00 24-hour format time (for times after noon)
|
|
1:28:14 time in hours, minutes, and seconds
|
|
- equivalent to 0
|
|
|
|
where hour 0 is midnight at the start of the day, and hour 24
|
|
is midnight at the end of the day. Any of these forms may be
|
|
followed by the letter w if the given time is local "wall
|
|
clock" time, s if the given time is local "standard" time, or u
|
|
(or g or z) if the given time is universal time; in the absence
|
|
of an indicator, wall clock time is assumed. The intent is
|
|
that a rule line describes the instants when a clock/calendar
|
|
set to the type of time specified in the AT field would show
|
|
the specified date and time of day.
|
|
|
|
SAVE Gives the amount of time to be added to local standard time
|
|
when the rule is in effect. This field has the same format as
|
|
the AT field (although, of course, the w and s suffixes are not
|
|
used).
|
|
|
|
LETTER/S
|
|
Gives the "variable part" (for example, the "S" or "D" in "EST"
|
|
or "EDT") of time zone abbreviations to be used when this rule
|
|
is in effect. If this field is "-", the variable part is null.
|
|
|
|
A zone line has the form
|
|
|
|
Zone NAME GMTOFF RULES/SAVE FORMAT [UNTILYEAR [MONTH [DAY [TIME]]]]
|
|
|
|
For example:
|
|
|
|
Zone Australia/Adelaide 9:30 Aus AC%sT 1971 Oct 31 2:00
|
|
|
|
The fields that make up a zone line are:
|
|
|
|
NAME The name of the time zone. This is the name used in creating the
|
|
time conversion information file for the zone. It should not
|
|
contain a file name component "." or ".."; a file name component
|
|
is a maximal substring that does not contain "/".
|
|
|
|
GMTOFF
|
|
The amount of time to add to UT to get standard time in this
|
|
zone. This field has the same format as the AT and SAVE fields
|
|
of rule lines; begin the field with a minus sign if time must be
|
|
subtracted from UT.
|
|
|
|
RULES/SAVE
|
|
The name of the rule(s) that apply in the time zone or,
|
|
alternately, an amount of time to add to local standard time. If
|
|
this field is - then standard time always applies in the time
|
|
zone.
|
|
|
|
FORMAT
|
|
The format for time zone abbreviations in this time zone. The
|
|
pair of characters %s is used to show where the "variable part"
|
|
of the time zone abbreviation goes. Alternately, a slash (/)
|
|
separates standard and daylight abbreviations.
|
|
|
|
UNTILYEAR [MONTH [DAY [TIME]]]
|
|
The time at which the UT offset or the rule(s) change for a
|
|
location. It is specified as a year, a month, a day, and a time
|
|
of day. If this is specified, the time zone information is
|
|
generated from the given UT offset and rule change until the time
|
|
specified, which is interpreted using the rules in effect just
|
|
before the transition. The month, day, and time of day have the
|
|
same format as the IN, ON, and AT fields of a rule; trailing
|
|
fields can be omitted, and default to the earliest possible value
|
|
for the missing fields.
|
|
|
|
The next line must be a "continuation" line; this has the same
|
|
form as a zone line except that the string "Zone" and the name
|
|
are omitted, as the continuation line will place information
|
|
starting at the time specified as the "until" information in the
|
|
previous line in the file used by the previous line.
|
|
Continuation lines may contain "until" information, just as zone
|
|
lines do, indicating that the next line is a further
|
|
continuation.
|
|
|
|
A link line has the form
|
|
|
|
Link TARGET LINK-NAME
|
|
|
|
For example:
|
|
|
|
Link Europe/Istanbul Asia/Istanbul
|
|
|
|
The TARGET field should appear as the NAME field in some zone line.
|
|
The LINK-NAME field is used as an alternate name for that zone; it has
|
|
the same syntax as a zone line's NAME field.
|
|
|
|
Except for continuation lines, lines may appear in any order in the
|
|
input. However, the behavior is unspecified if multiple zone or link
|
|
lines define the same name, or if the source of one link line is the
|
|
target of another.
|
|
|
|
Lines in the file that describes leap seconds have the following form:
|
|
|
|
Leap YEAR MONTH DAY HH:MM:SS CORR R/S
|
|
|
|
For example:
|
|
|
|
Leap 1974 Dec 31 23:59:60 + S
|
|
|
|
The YEAR, MONTH, DAY, and HH:MM:SS fields tell when the leap second
|
|
happened. The CORR field should be "+" if a second was added or "-" if
|
|
a second was skipped. The R/S field should be (an abbreviation of)
|
|
"Stationary" if the leap second time given by the other fields should
|
|
be interpreted as UTC or (an abbreviation of) "Rolling" if the leap
|
|
second time given by the other fields should be interpreted as local
|
|
wall clock time.
|
|
|
|
@{b}EXTENDED EXAMPLE@{ub}
|
|
Here is an extended example of zic input, intended to illustrate many
|
|
of its features.
|
|
|
|
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
|
|
Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
|
|
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
|
|
Rule EU 1977 only - Sep lastSun 1:00u 0 -
|
|
Rule EU 1978 only - Oct 1 1:00u 0 -
|
|
Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
|
|
Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
|
|
Rule EU 1996 max - Oct lastSun 1:00u 0 -
|
|
|
|
# Zone NAME GMTOFF RULES/SAVE FORMAT UNTIL
|
|
Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16
|
|
0:29:46 - BMT 1894 Jun
|
|
1:00 Swiss CE%sT 1981
|
|
1:00 EU CE%sT
|
|
|
|
Link Europe/Zurich Switzerland
|
|
|
|
In this example, the zone is named Europe/Zurich but it has an alias as
|
|
Switzerland. This example says that Zurich was 34 minutes and 8
|
|
seconds west of UT until 1853-07-16 at 00:00, when the legal offset was
|
|
changed to 7o26'22.50''; although this works out to 0:29:45.50, the
|
|
input format cannot represent fractional seconds so it is rounded here.
|
|
After 1894-06-01 at 00:00 Swiss daylight saving rules (defined with
|
|
lines beginning with "Rule Swiss") apply, and the UT offset became one
|
|
hour. From 1981 to the present, EU daylight saving rules have applied,
|
|
and the UTC offset has remained at one hour.
|
|
|
|
In 1941 and 1942, daylight saving time applied from the first Monday in
|
|
May at 01:00 to the first Monday in October at 02:00. The pre-1981 EU
|
|
daylight-saving rules have no effect here, but are included for
|
|
completeness. Since 1981, daylight saving has begun on the last Sunday
|
|
in March at 01:00 UTC. Until 1995 it ended the last Sunday in
|
|
September at 01:00 UTC, but this changed to the last Sunday in October
|
|
starting in 1996.
|
|
|
|
For purposes of display, "LMT" and "BMT" were initially used,
|
|
respectively. Since Swiss rules and later EU rules were applied, the
|
|
display name for the time zone has been CET for standard time and CEST
|
|
for daylight saving time.
|
|
|
|
@{b}NOTES@{ub}
|
|
For areas with more than two types of local time, you may need to use
|
|
local standard time in the AT field of the earliest transition time's
|
|
rule to ensure that the earliest transition time recorded in the
|
|
compiled file is correct.
|
|
|
|
If, for a particular zone, a clock advance caused by the start of
|
|
daylight saving coincides with and is equal to a clock retreat caused
|
|
by a change in UT offset, zic produces a single transition to daylight
|
|
saving at the new UT offset (without any change in wall clock time).
|
|
To get separate transitions use multiple zone continuation lines
|
|
specifying transition instants using universal time.
|
|
|
|
Time stamps well before the Big Bang are silently omitted from the
|
|
output. This works around bugs in software that mishandles large
|
|
negative time stamps. Call it sour grapes, but pre-Big-Bang time
|
|
stamps are physically suspect anyway. The pre-Big-Bang cutoff time
|
|
is approximate and may change in future versions.
|
|
|
|
zic is currently not included in the Amiga distribution.
|
|
|
|
@{b}FILE@{ub}
|
|
ZONEINFO: - standard directory used for created files
|
|
|
|
@{b}SEE ALSO@{ub}
|
|
@{"tzfile" link "tzfile"}, @{"zdump" link "zdump"}
|
|
|
|
|
|
@endnode
|
|
@node tzfile "tzfile developer manual"
|
|
@title "Time zone information"
|
|
@{bg filltext}@{b}TZFILE TZFILE@{ub}@{bg background}
|
|
|
|
@{b}NAME@{ub}
|
|
tzfile - time zone information
|
|
|
|
@{b}SYNOPSIS@{ub}
|
|
#include <tzfile.h>
|
|
|
|
@{b}DESCRIPTION@{ub}
|
|
The time zone information files used by tzset begin with the magic
|
|
characters "TZif" to identify them as time zone information files,
|
|
followed by a character identifying the version of the file's format
|
|
(as of 2013, either an ASCII NUL, or '2', or '3') followed by fifteen
|
|
bytes containing zeroes reserved for future use, followed by six four-
|
|
byte integer values 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 UT/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 entries are stored in
|
|
the file.
|
|
|
|
tzh_timecnt
|
|
The number of transition times for which data entries are stored
|
|
in the file.
|
|
|
|
tzh_typecnt
|
|
The number of local time types for which data entries are stored
|
|
in the file (must not be zero).
|
|
|
|
tzh_charcnt
|
|
The number of characters of time zone abbreviation strings
|
|
stored in the file.
|
|
|
|
The above header is followed by tzh_timecnt four-byte signed integer
|
|
values sorted in ascending order. These values are written in standard
|
|
byte order. Each is used as a transition time (as returned by time) at
|
|
which the rules for computing local time change. Next come tzh_timecnt
|
|
one-byte unsigned integer values; 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 appears next
|
|
in the file; these structures are defined as follows:
|
|
|
|
struct ttinfo {
|
|
int32_t tt_gmtoff;
|
|
unsigned char tt_isdst;
|
|
unsigned char tt_abbrind;
|
|
};
|
|
|
|
Each structure is written as a four-byte signed integer value for
|
|
tt_gmtoff, 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 UT, tt_isdst tells
|
|
whether tm_isdst should be set by localtime (3) and tt_abbrind serves
|
|
as an index into the array of time zone 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) 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 time zone file is used in handling POSIX-
|
|
style time zone environment variables.
|
|
|
|
Finally there are tzh_ttisgmtcnt UT/local indicators, each stored as a
|
|
one-byte value; they tell whether the transition times associated with
|
|
local time types were specified as UT or local time, and are used when
|
|
a time zone file is used in handling POSIX-style time zone environment
|
|
variables.
|
|
|
|
Localtime 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.
|
|
|
|
For version-2-format time zone files, the above header and data are
|
|
followed by a second header and data, identical in format except that
|
|
eight bytes are used for each transition time or leap second time.
|
|
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).
|
|
|
|
For version-3-format time zone files, the POSIX-TZ-style string may use
|
|
two minor extensions to the POSIX TZ format, as described in
|
|
newtzset(3). First, the hours part of its transition times may be
|
|
signed and range from -167 through 167 instead of the POSIX-required
|
|
unsigned values from 0 through 24. Second, DST is in effect all year
|
|
if it starts January 1 at 00:00 and ends December 31 at 24:00 plus the
|
|
difference between daylight saving and standard time.
|
|
|
|
Future changes to the format may append more data.
|
|
|
|
@{b}SEE ALSO@{ub}
|
|
@{"zdump" link "zdump"}, @{"zic" link "zic"}
|
|
|
|
|
|
@endnode
|