mirror of
https://frontier.innolan.net/rainlance/amiga-tz.git
synced 2025-11-20 00:52:18 +00:00
AmigaOS changes
This commit is contained in:
@ -80,5 +80,16 @@ dstcheck: dstcheck.o localtime.o asctime.o amiga_tz.o
|
||||
clean:
|
||||
rm -f amiga_tz.o asctime.o date.o difftime.o localtime.o strftime.o zdump.o zic.o strtoll.o date_amiga.o timezone.o timezoneinfo.o setclockgmt.o dstcheck.o version.h libtz.a zic ZDump DateTZ TimeZone TimeZoneInfo SetClockGMT DSTCheck
|
||||
|
||||
MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \
|
||||
tzfile.5 tzselect.8 zic.8 zdump.8
|
||||
|
||||
MANTXTS= newctime.3.txt newstrftime.3.txt newtzset.3.txt \
|
||||
time2posix.3.txt \
|
||||
tzfile.5.txt tzselect.8.txt zic.8.txt zdump.8.txt \
|
||||
date.1.txt
|
||||
|
||||
$(MANTXTS): workman.sh
|
||||
LC_ALL=C sh workman.sh `expr $@ : '\(.*\)\.txt$$'` >$@
|
||||
|
||||
depend:
|
||||
@echo Dependencies already done
|
||||
|
||||
786
tz.guide
Normal file
786
tz.guide
Normal file
@ -0,0 +1,786 @@
|
||||
@database tzc.guide
|
||||
@author Carsten Larsen
|
||||
@(c) Carsten Larsen
|
||||
@$VER: tz.guide 1.00 (27.06.2015)
|
||||
@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
|
||||
|
||||
@{b}DEVELOPER MANUALS@{ub}
|
||||
|
||||
@{"ZDump " link "ZDump"} Time zone dumper
|
||||
@{"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}
|
||||
|
||||
* Copy files in C to your systems C:
|
||||
* Copy files in Prefs to your systems SYS:Prefs
|
||||
* Copy files in Storage to your systems SYS:Storage
|
||||
* Copy files in Locale to your systems LOCALE:Zoneinfo
|
||||
* Copy files in Help to your systems LOCALE:Help/TimeZone
|
||||
* Copy files in Developer to your GCC environment
|
||||
|
||||
@{b}SETUP@{ub}
|
||||
|
||||
Select a Time Zone:
|
||||
Open TimeZone GUI in Prefs
|
||||
|
||||
Save time to RTC (hardware) clock:
|
||||
SETCLOCKGMT SAVE
|
||||
|
||||
Load time to local timezone:
|
||||
Add SETCLOCKGMT LOAD to end of S:Startup-Sequence
|
||||
|
||||
Validate time zone preferences in shell:
|
||||
TIMEZONEINFO
|
||||
|
||||
Get additional time zone options:
|
||||
Move files from SYS:Storage/Zoneinfo to LOCALE:Zoneinfo
|
||||
|
||||
|
||||
|
||||
@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 LOCALE:Zonefile directory.
|
||||
|
||||
|
||||
@{bg filltext}@{b} June 27, 2015 TimeZone@{ub}@{bg background}
|
||||
@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.
|
||||
|
||||
|
||||
@{bg filltext}@{b} June 27, 2015 TimeZoneInfo@{ub}@{bg background}
|
||||
@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.
|
||||
|
||||
|
||||
@{bg filltext}@{b} June 27, 2015 SetClockGMT@{ub}@{bg background}
|
||||
@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
|
||||
|
||||
|
||||
@{bg filltext}@{b} June 27, 2015 DSTCheck@{ub}@{bg background}
|
||||
@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 [ option ... ] [ zonename ... ]
|
||||
|
||||
@{b}DESCRIPTION@{ub}
|
||||
ZDump prints the current time in each zonename named on the command
|
||||
line.
|
||||
|
||||
@{b}OPTIONS@{ub}
|
||||
--version
|
||||
Output version information and exit.
|
||||
|
||||
-v 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.
|
||||
|
||||
-V 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.
|
||||
|
||||
-c [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.
|
||||
|
||||
-t [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"}
|
||||
|
||||
|
||||
@{bg filltext}@{b} June 27, 2015 ZDump@{ub}@{bg background}
|
||||
@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.
|
||||
|
||||
@{b}FILE@{ub}
|
||||
LOCALE:Zoneinfo - standard directory used for created files
|
||||
|
||||
@{b}SEE ALSO@{ub}
|
||||
@{"tzfile" link "tzfile"}, @{"zdump" link "zdump"}
|
||||
|
||||
|
||||
@{bg filltext}@{b} June 27, 2015 ZIC@{ub}@{bg background}
|
||||
@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"}
|
||||
|
||||
|
||||
@{bg filltext}@{b} June 27, 2015 TZFILE@{ub}@{bg background}
|
||||
@endnode
|
||||
Reference in New Issue
Block a user