summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-03-16 23:04:46 +0100
committerAlejandro Colomar <alx@kernel.org>2024-03-16 23:05:18 +0100
commit79bd8a7a4392a104d4551da22055e11cbf7ee774 (patch)
tree19740797012fc11121c752af9948d3192a5f8a29
parentdf9f1bc4cafc9f871c320df76c24b01ba930cafd (diff)
tzfile.5, tzselect.8, zdump.8, zic.8: Refresh pages
Refreshed from tzdb-2024a. Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r--man5/tzfile.5144
-rw-r--r--man8/tzselect.84
-rw-r--r--man8/zdump.817
-rw-r--r--man8/zic.8139
4 files changed, 153 insertions, 151 deletions
diff --git a/man5/tzfile.5 b/man5/tzfile.5
index 45afecc10..867348d67 100644
--- a/man5/tzfile.5
+++ b/man5/tzfile.5
@@ -26,23 +26,24 @@ a signed binary integer is represented using two's complement,
and a boolean is represented by a one-byte binary integer that is
either 0 (false) or 1 (true).
The format begins with a 44-byte header containing the following fields:
-.IP * 2
+.RS "\w' 'u"
+.IP \(bu "\w'\(bu 'u"
The magic four-byte ASCII sequence
.q "TZif"
identifies the file as a timezone information file.
-.IP *
+.IP \(bu
A byte identifying the version of the file's format
(as of 2021, either an ASCII NUL,
.q "2",
.q "3",
or
.q "4" ).
-.IP *
+.IP \(bu
Fifteen bytes containing zeros reserved for future use.
-.IP *
+.IP \(bu
Six four-byte integer values, in the following order:
-.RS
-.TP
+.RS "\w' \(bu 'u"
+.TP "\w' 'u"
.B tzh_ttisutcnt
The number of UT/local indicators stored in the file.
(UT is Universal Time.)
@@ -65,17 +66,18 @@ in the file (must not be zero).
The number of bytes of time zone abbreviation strings
stored in the file.
.RE
-.P
+.PP
The above header is followed by the following fields, whose lengths
depend on the contents of the header:
-.IP * 2
+.RS "\w' 'u"
+.IP \(bu "\w'\(bu 'u"
.B tzh_timecnt
four-byte signed integer values sorted in ascending order.
These values are written in network byte order.
Each is used as a transition time (as returned by
.BR time (2))
at which the rules for computing local time change.
-.IP *
+.IP \(bu
.B tzh_timecnt
one-byte unsigned integer values;
each one but the last tells which of the different types of local time types
@@ -83,22 +85,22 @@ described in the file is associated with the time period
starting with the same-indexed transition time
and continuing up to but not including the next transition time.
(The last time type is present only for consistency checking with the
-POSIX-style TZ string described below.)
+POSIX.1-2017-style TZ string described below.)
These values serve as indices into the next field.
-.IP *
+.IP \(bu
.B tzh_typecnt
.B ttinfo
entries, each defined as follows:
-.in +.5i
+.in +2
.sp
.nf
-.ta .5i +\w'unsigned char\0\0'u
+.ta \w'\0\0\0\0'u +\w'unsigned char\0'u
struct ttinfo {
int32_t tt_utoff;
unsigned char tt_isdst;
unsigned char tt_desigidx;
};
-.in -.5i
+.in
.fi
.sp
Each structure is written as a four-byte signed integer value for
@@ -132,7 +134,8 @@ Also, in realistic applications
is in the range [\-89999, 93599] (i.e., more than \-25 hours and less
than 26 hours); this allows easy support by implementations that
already support the POSIX-required range [\-24:59:59, 25:59:59].
-.IP *
+.RS "\w' 'u"
+.IP \(bu "\w'\(bu 'u"
.B tzh_charcnt
bytes that represent time zone designations,
which are null-terminated byte strings, each indexed by the
@@ -140,7 +143,7 @@ which are null-terminated byte strings, each indexed by the
values mentioned above.
The byte strings can overlap if one is a suffix of the other.
The encoding of these strings is not specified.
-.IP *
+.IP \(bu
.B tzh_leapcnt
pairs of four-byte values, written in network byte order;
the first value of each pair gives the nonnegative time
@@ -167,22 +170,24 @@ otherwise, for timestamps before the first occurrence time,
the leap-second correction is zero if the first pair's correction is 1 or \-1,
and is unspecified otherwise (which can happen only in files
truncated at the start).
-.IP *
+.IP \(bu
.B tzh_ttisstdcnt
standard/wall indicators, each stored as a one-byte boolean;
they tell whether the transition times associated with local time types
were specified as standard time or local (wall clock) time.
-.IP *
+.IP \(bu
.B tzh_ttisutcnt
UT/local indicators, each stored as a one-byte boolean;
they tell whether the transition times associated with local time types
were specified as UT or local time.
If a UT/local indicator is set, the corresponding standard/wall indicator
must also be set.
-.P
+.RE
+.PP
The standard/wall and UT/local indicators were designed for
transforming a TZif file's transition times into transitions appropriate
-for another time zone specified via a POSIX-style TZ string that lacks rules.
+for another time zone specified via
+a POSIX.1-2017-style TZ string that lacks rules.
For example, when TZ="EET\*-2EEST" and there is no TZif file "EET\*-2EEST",
the idea was to adapt the transition times from a TZif file with the
well-known name "posixrules" that is present only for this purpose and
@@ -194,7 +199,7 @@ so users desiring (say) Greek time should instead specify
TZ="Europe/Athens" for better historical coverage, falling back on
TZ="EET\*-2EEST,M3.5.0/3,M10.5.0/4" if POSIX conformance is required
and older timestamps need not be handled accurately.
-.P
+.PP
The
.BR localtime (3)
function
@@ -211,13 +216,14 @@ 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.
(Leap second counts remain four bytes.)
-After the second header and data comes a newline-enclosed,
-POSIX-TZ-environment-variable-style string for use in handling instants
+After the second header and data comes a newline-enclosed string
+in the style of the contents of a POSIX.1-2017 TZ environment variable,
+for use in handling instants
after the last transition time stored in the file
or for all instants if the file has no transitions.
-The POSIX-style TZ string is empty (i.e., nothing between the newlines)
-if there is no POSIX-style representation for such instants.
-If nonempty, the POSIX-style TZ string must agree with the local time
+The TZ string is empty (i.e., nothing between the newlines)
+if there is no POSIX.1-2017-style representation for such instants.
+If nonempty, the TZ string must agree with the local time
type after the last transition time if present in the eight-byte data;
for example, given the string
.q "WET0WEST,M3.5.0/1,M10.5.0"
@@ -229,8 +235,8 @@ Also, if there is at least one transition, time type 0 is associated
with the time period from the indefinite past up to but not including
the earliest transition time.
.SS Version 3 format
-For version-3-format timezone files, the POSIX-TZ-style string may
-use two minor extensions to the POSIX TZ format, as described in
+For version-3-format timezone files, the TZ string may
+use two minor extensions to the POSIX.1-2017 TZ format, as described in
.BR 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
@@ -250,14 +256,14 @@ releases will likely add leap second entries after the expiration, and
the added leap seconds will change how post-expiration timestamps are treated.
.SS Interoperability considerations
Future changes to the format may append more data.
-.P
+.PP
Version 1 files are considered a legacy format and
should not be generated, as they do not support transition
times after the year 2038.
Readers that understand only Version 1 must ignore
any data that extends beyond the calculated end of the version
1 data block.
-.P
+.PP
Other than version 1, writers should generate
the lowest version number needed by a file's data.
For example, a writer should generate a version 4 file
@@ -266,7 +272,7 @@ Likewise, a writer not generating a version 4 file
should generate a version 3 file only if
TZ string extensions are necessary to accurately
model transition times.
-.P
+.PP
The sequence of time changes defined by the version 1
header and data block should be a contiguous sub-sequence
of the time changes defined by the version 2+ header and data
@@ -278,12 +284,12 @@ supporting obsolescent readers use a
.B tzh_timecnt
of zero
in the version 1 data block to save space.
-.P
+.PP
When a TZif file contains a leap second table expiration
time, TZif readers should either refuse to process
post-expiration timestamps, or process them as if the expiration
time did not exist (possibly with an error indication).
-.P
+.PP
Time zone designations should consist of at least three (3)
and no more than six (6) ASCII characters from the set of
alphanumerics,
@@ -292,15 +298,15 @@ and
.q "+".
This is for compatibility with POSIX requirements for
time zone abbreviations.
-.P
+.PP
When reading a version 2 or higher file, readers
should ignore the version 1 header and data block except for
the purpose of skipping over them.
-.P
+.PP
Readers should calculate the total lengths of the
headers and data blocks and check that they all fit within
the actual file size, as part of a validity check for the file.
-.P
+.PP
When a positive leap second occurs, readers should append an extra
second to the local minute containing the second just before the leap
second. If this occurs when the UTC offset is not a multiple of 60
@@ -312,16 +318,18 @@ This section documents common problems in reading or writing TZif files.
Most of these are problems in generating TZif files for use by
older readers.
The goals of this section are:
-.IP * 2
+.RS "\w' 'u"
+.IP \(bu "\w'\(bu 'u"
to help TZif writers output files that avoid common
pitfalls in older or buggy TZif readers,
-.IP *
+.IP \(bu
to help TZif readers avoid common pitfalls when reading
files generated by future TZif writers, and
-.IP *
+.IP \(bu
to help any future specification authors see what sort of
problems arise when the TZif format is changed.
-.P
+.RE
+.PP
When new versions of the TZif format have been defined, a
design goal has been that a reader can successfully use a TZif
file even if the file is of a later TZif version than what the
@@ -333,23 +341,24 @@ new-version data useful even for older-version readers.
This section attempts to document these compatibility issues and
workarounds, as well as to document other common bugs in
readers.
-.P
+.PP
Interoperability problems with TZif include the following:
-.IP * 2
+.RS "\w' 'u"
+.IP \(bu "\w'\(bu 'u"
Some readers examine only version 1 data.
As a partial workaround, a writer can output as much version 1
data as possible.
However, a reader should ignore version 1 data, and should use
version 2+ data even if the reader's native timestamps have only
32 bits.
-.IP *
+.IP \(bu
Some readers designed for version 2 might mishandle
timestamps after a version 3 or higher file's last transition, because
-they cannot parse extensions to POSIX in the TZ-like string.
+they cannot parse extensions to POSIX.1-2017 in the TZ-like string.
As a partial workaround, a writer can output more transitions
than necessary, so that only far-future timestamps are
mishandled by version 2 readers.
-.IP *
+.IP \(bu
Some readers designed for version 2 do not support
permanent daylight saving time with transitions after 24:00
\(en e.g., a TZ string
@@ -367,22 +376,22 @@ for the next time zone east \(en e.g.,
.q "AST4"
for permanent
Atlantic Standard Time (\-04).
-.IP *
+.IP \(bu
Some readers designed for version 2 or 3, and that require strict
conformance to RFC 8536, reject version 4 files whose leap second
tables are truncated at the start or that end in expiration times.
-.IP *
+.IP \(bu
Some readers ignore the footer, and instead predict future
timestamps from the time type of the last transition.
As a partial workaround, a writer can output more transitions
than necessary.
-.IP *
+.IP \(bu
Some readers do not use time type 0 for timestamps before
the first transition, in that they infer a time type using a
heuristic that does not always select time type 0.
As a partial workaround, a writer can output a dummy (no-op)
first transition at an early time.
-.IP *
+.IP \(bu
Some readers mishandle timestamps before the first
transition that has a timestamp not less than \-2**31.
Readers that support only 32-bit timestamps are likely to be
@@ -391,12 +400,12 @@ more prone to this problem, for example, when they process
bits.
As a partial workaround, a writer can output a dummy
transition at timestamp \-2**31.
-.IP *
+.IP \(bu
Some readers mishandle a transition if its timestamp has
the minimum possible signed 64-bit value.
Timestamps less than \-2**59 are not recommended.
-.IP *
-Some readers mishandle POSIX-style TZ strings that
+.IP \(bu
+Some readers mishandle TZ strings that
contain
.q "<"
or
@@ -407,11 +416,11 @@ or
.q ">"
for time zone abbreviations containing only alphabetic
characters.
-.IP *
+.IP \(bu
Many readers mishandle time zone abbreviations that contain
non-ASCII characters.
These characters are not recommended.
-.IP *
+.IP \(bu
Some readers may mishandle time zone abbreviations that
contain fewer than 3 or more than 6 characters, or that
contain ASCII characters other than alphanumerics,
@@ -419,23 +428,23 @@ contain ASCII characters other than alphanumerics,
and
.q "+".
These abbreviations are not recommended.
-.IP *
+.IP \(bu
Some readers mishandle TZif files that specify
daylight-saving time UT offsets that are less than the UT
offsets for the corresponding standard time.
These readers do not support locations like Ireland, which
-uses the equivalent of the POSIX TZ string
+uses the equivalent of the TZ string
.q "IST\*-1GMT0,M10.5.0,M3.5.0/1",
observing standard time
(IST, +01) in summer and daylight saving time (GMT, +00) in winter.
As a partial workaround, a writer can output data for the
-equivalent of the POSIX TZ string
+equivalent of the TZ string
.q "GMT0IST,M3.5.0/1,M10.5.0",
thus swapping standard and daylight saving time.
Although this workaround misidentifies which part of the year
uses daylight saving time, it records UT offsets and time zone
abbreviations correctly.
-.IP *
+.IP \(bu
Some readers generate ambiguous timestamps for positive leap seconds
that occur when the UTC offset is not a multiple of 60 seconds.
For example, in a timezone with UTC offset +01:23:45 and with
@@ -446,38 +455,41 @@ instead of mapping the latter to 01:23:46, and they will map 78796815 to
This has not yet been a practical problem, since no civil authority
has observed such UTC offsets since leap seconds were
introduced in 1972.
-.P
+.RE
+.PP
Some interoperability problems are reader bugs that
are listed here mostly as warnings to developers of readers.
-.IP * 2
+.RS "\w' 'u"
+.IP \(bu "\w'\(bu 'u"
Some readers do not support negative timestamps.
Developers of distributed applications should keep this
in mind if they need to deal with pre-1970 data.
-.IP *
+.IP \(bu
Some readers mishandle timestamps before the first
transition that has a nonnegative timestamp.
Readers that do not support negative timestamps are likely to
be more prone to this problem.
-.IP *
+.IP \(bu
Some readers mishandle time zone abbreviations like
.q "\*-08"
that contain
.q "+",
.q "\*-",
or digits.
-.IP *
+.IP \(bu
Some readers mishandle UT offsets that are out of the
traditional range of \-12 through +12 hours, and so do not
support locations like Kiritimati that are outside this
range.
-.IP *
+.IP \(bu
Some readers mishandle UT offsets in the range [\-3599, \-1]
seconds from UT, because they integer-divide the offset by
3600 to get 0 and then display the hour part as
.q "+00".
-.IP *
+.IP \(bu
Some readers mishandle UT offsets that are not a multiple
of one hour, or of 15 minutes, or of 1 minute.
+.RE
.SH SEE ALSO
.BR time (2),
.BR localtime (3),
@@ -485,7 +497,7 @@ of one hour, or of 15 minutes, or of 1 minute.
.BR tzselect (8),
.BR zdump (8),
.BR zic (8).
-.P
+.PP
Olson A, Eggert P, Murchison K. The Time Zone Information Format (TZif).
2019 Feb.
.UR https://\:datatracker.ietf.org/\:doc/\:html/\:rfc8536
diff --git a/man8/tzselect.8 b/man8/tzselect.8
index 9b9049f7b..ee031614f 100644
--- a/man8/tzselect.8
+++ b/man8/tzselect.8
@@ -36,7 +36,7 @@ The
program asks the user for information about the current location,
and outputs the resulting timezone to standard output.
The output is suitable as a value for the TZ environment variable.
-.P
+.PP
All interaction with the user is done via standard input and standard error.
.SH OPTIONS
.TP
@@ -95,7 +95,7 @@ Output version information and exit.
.SH "ENVIRONMENT VARIABLES"
.TP
\f3AWK\fP
-Name of a Posix-compliant
+Name of a POSIX-compliant
.B awk
program (default:
.BR awk ).
diff --git a/man8/zdump.8 b/man8/zdump.8
index a248d2974..c3f0bba60 100644
--- a/man8/zdump.8
+++ b/man8/zdump.8
@@ -110,7 +110,7 @@ zero or more following lines
.q "\fIdate time interval\fP",
one line for each transition time and following interval. Fields are
separated by single tabs.
-.P
+.PP
Dates are in
.IR yyyy - mm - dd
format and times are in 24-hour
@@ -126,7 +126,7 @@ double-quoted strings unless they consist of one or more alphabetic
characters. An isdst flag is omitted for standard time, and otherwise
is a decimal integer that is unsigned and positive (typically 1) for
daylight saving time and negative for unknown.
-.P
+.PP
In times and in UT offsets with absolute value less than 100 hours,
the seconds are omitted if they are zero, and
the minutes are also omitted if they are also zero. Positive UT
@@ -137,14 +137,14 @@ abbreviation begins with
.q "\*-"
or is
.q "zzz".
-.P
+.PP
In double-quoted strings, escape sequences represent unusual
characters. The escape sequences are \es for space, and \e", \e\e,
\ef, \en, \er, \et, and \ev with their usual meaning in the C
programming language. E.g., the double-quoted string
\*(lq"CET\es\e"\e\e"\*(rq represents the character sequence \*(lqCET
"\e\*(rq.\""
-.P
+.PP
.ne 9
Here is an example of the output, with the leading empty line omitted.
(This example is shown with tab stops set far enough apart so that the
@@ -152,10 +152,9 @@ tabbed columns line up.)
.nf
.sp
.if \n(.g .ft CR
-.if t .in +.5i
-.if n .in +2
+.in +2
.nr w \w'1896-01-13 'u+\n(.i
-.ta \w'1896-01-13 'u +\w'12:01:26 'u +\w'-103126 'u +\w'HWT 'u
+.ta \w'1896-01-13\0\0'u +\w'12:01:26\0\0'u +\w'-103126\0\0'u +\w'HWT\0\0'u
TZ="Pacific/Honolulu"
- - -103126 LMT
1896-01-13 12:01:26 -1030 HST
@@ -179,7 +178,7 @@ abbreviated HST. Immediately after the second transition, the date is
Immediately after the last transition the date is 1947-06-08 and the
time is 02:30:00, and the following time interval is 10 hours west of
UT, a standard time abbreviated HST.
-.P
+.PP
.ne 10
Here are excerpts from another example:
.nf
@@ -209,7 +208,7 @@ Time discontinuities are found by sampling the results returned by
at twelve-hour intervals.
This works in all real-world cases;
one can construct artificial time zones for which this fails.
-.P
+.PP
In the
.B \*-v
and
diff --git a/man8/zic.8 b/man8/zic.8
index 557ccd282..0ad373a2d 100644
--- a/man8/zic.8
+++ b/man8/zic.8
@@ -95,7 +95,7 @@ as local time.
.B zic
will act as if the input contained a link line of the form
.sp
-.ti +.5i
+.ti +2
.ta \w'Link\0\0'u +\w'\fItimezone\fP\0\0'u
Link \fItimezone\fP localtime
.sp
@@ -118,9 +118,15 @@ TZ strings like "EET\*-2EEST" that lack transition rules.
.B zic
will act as if the input contained a link line of the form
.sp
-.ti +.5i
+.ti +2
Link \fItimezone\fP posixrules
.sp
+If
+.I timezone
+is
+.q "\*-"
+(the default), any already-existing link is removed.
+.sp
Unless
.I timezone is
.q "\*-" ,
@@ -131,12 +137,6 @@ and it should not be combined with
if
.IR timezone 's
transitions are at standard time or Universal Time (UT) instead of local time.
-.sp
-If
-.I timezone
-is
-.BR \*- ,
-any already-existing link is removed.
.TP
.BR "\*-r " "[\fB@\fP\fIlo\fP][\fB/@\fP\fIhi\fP]"
Limit the applicability of output files
@@ -171,7 +171,7 @@ boundaries, particularly if
causes a TZif file to contain explicit entries for
.RI pre- hi
transitions rather than concisely representing them
-with an extended POSIX TZ string.
+with an extended POSIX.1-2017 TZ string.
Also see the
.B "\*-b slim"
option for another way to shrink output size.
@@ -181,10 +181,10 @@ Generate redundant trailing explicit transitions for timestamps
that occur less than
.I hi
seconds since the Epoch, even though the transitions could be
-more concisely represented via the extended POSIX TZ string.
+more concisely represented via the extended POSIX.1-2017 TZ string.
This option does not affect the represented timestamps.
Although it accommodates nonstandard TZif readers
-that ignore the extended POSIX TZ string,
+that ignore the extended POSIX.1-2017 TZ string,
it increases the size of the altered output files.
.TP
.BI "\*-t " file
@@ -194,37 +194,37 @@ the named file rather than in the standard location.
.B \*-v
Be more verbose, and complain about the following situations:
.RS
-.P
+.PP
The input specifies a link to a link,
something not supported by some older parsers, including
.B zic
itself through release 2022e.
-.P
+.PP
A year that appears in a data file is outside the range
of representable years.
-.P
+.PP
A time of 24:00 or more appears in the input.
Pre-1998 versions of
.B zic
prohibit 24:00, and pre-2007 versions prohibit times greater than 24:00.
-.P
+.PP
A rule goes past the start or end of the month.
Pre-2004 versions of
.B zic
prohibit this.
-.P
+.PP
A time zone abbreviation uses a
.B %z
format.
Pre-2015 versions of
.B zic
do not support this.
-.P
+.PP
A timestamp contains fractional seconds.
Pre-2018 versions of
.B zic
do not support this.
-.P
+.PP
The input contains abbreviations that are mishandled by pre-2018 versions of
.B zic
due to a longstanding coding bug.
@@ -242,20 +242,20 @@ and
.q Su
for
.q Sun .
-.P
+.PP
The output file does not contain all the information about the
long-term future of a timezone, because the future cannot be summarized as
-an extended POSIX TZ string. For example, as of 2023 this problem
+an extended POSIX.1-2017 TZ string. For example, as of 2023 this problem
occurs for Morocco's daylight-saving rules, as these rules are based
on predictions for when Ramadan will be observed, something that
-an extended POSIX TZ string cannot represent.
-.P
+an extended POSIX.1-2017 TZ string cannot represent.
+.PP
The output contains data that may not be handled properly by client
code designed for older
.B zic
output formats. These compatibility issues affect only timestamps
before 1970 or after the start of 2038.
-.P
+.PP
The output contains a truncated leap second table,
which can cause some older TZif readers to misbehave.
This can occur if the
@@ -264,17 +264,17 @@ option is used, and either an Expires line is present or
the
.B "\*-r"
option is also used.
-.P
+.PP
The output file contains more than 1200 transitions,
which may be mishandled by some clients.
The current reference client supports at most 2000 transitions;
pre-2014 versions of the reference client support at most 1200
transitions.
-.P
+.PP
A time zone abbreviation has fewer than 3 or more than 6 characters.
POSIX requires at least 3, and requires implementations to support
at least 6.
-.P
+.PP
An output file name contains a byte that is not an ASCII letter,
.q "\*-" ,
.q "/" ,
@@ -288,7 +288,7 @@ or that starts with
Input files use the format described in this section; output files use
.BR tzfile (5)
format.
-.P
+.PP
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 2048 bytes counting the newline, and without any NUL bytes.
@@ -303,7 +303,7 @@ nearly any character, other software will work better if these are
limited to the restricted syntax described under the
.B \*-v
option.
-.P
+.PP
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,
@@ -316,7 +316,7 @@ White space characters and sharp characters may be enclosed in double quotes
Any line that is blank (after comment stripping) is ignored.
Nonblank lines are expected to be of one of three types:
rule lines, zone lines, and link lines.
-.P
+.PP
Names must be in English and are case insensitive.
They appear in several contexts, and include month and weekday names
and keywords such as
@@ -327,22 +327,22 @@ and
.BR "Zone" .
A name can be abbreviated by omitting all but an initial prefix; any
abbreviation must be unambiguous in context.
-.P
+.PP
A rule line has the form
.nf
-.ti +.5i
+.ti +2
.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'\*-\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00w\0\0'u +\w'1:00d\0\0'u
.sp
Rule NAME FROM TO \*- IN ON AT SAVE LETTER/S
.sp
For example:
-.ti +.5i
+.ti +2
.sp
Rule US 1967 1973 \*- Apr lastSun 2:00w 1:00d D
.sp
.fi
The fields that make up a rule line are:
-.TP "\w'LETTER/S'u"
+.TP
.B NAME
Gives the name of the rule set that contains this line.
The name must start with a character that is neither
@@ -360,24 +360,15 @@ an unquoted name should not contain characters from the set
Gives the first year in which the rule applies.
Any signed integer year can be supplied; the proleptic Gregorian calendar
is assumed, with year 0 preceding year 1.
-The word
-.B minimum
-(or an abbreviation) means the indefinite past.
-The word
-.B maximum
-(or an abbreviation) means the indefinite future.
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.
.TP
.B TO
Gives the final year in which the rule applies.
-In addition to
-.B minimum
-and
+The word
.B maximum
-(as above),
-the word
+(or an abbreviation) means the indefinite future, and the word
.B only
(or an abbreviation)
may be used to repeat the value of the
@@ -404,7 +395,7 @@ Month names may be abbreviated.
Gives the day on which the rule takes effect.
Recognized forms include:
.nf
-.in +.5i
+.in +2
.sp
.ta \w'Sun<=25\0\0'u
5 the fifth of the month
@@ -413,7 +404,7 @@ 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
.fi
-.in -.5i
+.in
.sp
A weekday name (e.g.,
.BR "Sunday" )
@@ -440,7 +431,7 @@ Gives the time of day at which the rule takes effect,
relative to 00:00, the start of a calendar day.
Recognized forms include:
.nf
-.in +.5i
+.in +2
.sp
.ta \w'00:19:32.13\0\0'u
2 time in hours
@@ -454,7 +445,7 @@ Recognized forms include:
\*-2:30 2.5 hours before 00:00
\*- equivalent to 0
.fi
-.in -.5i
+.in
.sp
Although
.B zic
@@ -528,22 +519,22 @@ of time zone abbreviations to be used when this rule is in effect.
If this field is
.q \*- ,
the variable part is null.
-.P
+.PP
A zone line has the form
.sp
.nf
-.ti +.5i
+.ti +2
.ta \w'Zone\0\0'u +\w'Asia/Amman\0\0'u +\w'STDOFF\0\0'u +\w'Jordan\0\0'u +\w'FORMAT\0\0'u
Zone NAME STDOFF RULES FORMAT [UNTIL]
.sp
For example:
.sp
-.ti +.5i
+.ti +2
Zone Asia/Amman 2:00 Jordan EE%sT 2017 Oct 27 01:00
.sp
.fi
The fields that make up a zone line are:
-.TP "\w'STDOFF'u"
+.TP
.B NAME
The name of the timezone.
This is the name used in creating the time conversion information file for the
@@ -632,7 +623,7 @@ Continuation lines may contain
.q "until"
information, just as zone lines do, indicating that the next line is a further
continuation.
-.P
+.PP
If a zone changes at the same instant that a rule would otherwise take
effect in the earlier zone or continuation line, the rule is ignored.
A zone or continuation line
@@ -647,7 +638,7 @@ earliest rule use the rule in effect after
first transition into standard time.
In a single zone it is an error if two rules take effect at the same
instant, or if two zone changes take effect at the same instant.
-.P
+.PP
If a continuation line subtracts
.I N
seconds from the UT offset after a transition that would be
@@ -663,15 +654,15 @@ For example:
.br
.ne 7
.nf
-.in +2m
+.in +2
.ta \w'# Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'2006\0\0'u +\w'\*-\0\0'u +\w'Oct\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
.sp
# Rule NAME FROM TO \*- IN ON AT SAVE LETTER/S
Rule US 1967 2006 - Oct lastSun 2:00 0 S
Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
-.ta \w'Zone\0\0America/Menominee\0\0'u +\w'STDOFF\0\0'u +\w'RULES\0\0'u +\w'FORMAT\0\0'u
-# Zone\0\0NAME STDOFF RULES FORMAT [UNTIL]
-Zone\0\0America/Menominee \*-5:00 \*- EST 1973 Apr 29 2:00
+.ta \w'# Zone\0\0'u +\w'America/Menominee\0\0'u +\w'STDOFF\0\0'u +\w'RULES\0\0'u +\w'FORMAT\0\0'u
+# Zone NAME STDOFF RULES FORMAT [UNTIL]
+Zone America/Menominee \*-5:00 \*- EST 1973 Apr 29 2:00
\*-6:00 US C%sT
.sp
.in
@@ -683,17 +674,17 @@ However,
.B zic
interprets this more sensibly as a single transition from 02:00 CST (\*-05) to
02:00 CDT (\*-05).
-.P
+.PP
A link line has the form
.sp
.nf
-.ti +.5i
+.ti +2
.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u
Link TARGET LINK-NAME
.sp
For example:
.sp
-.ti +.5i
+.ti +2
Link Europe/Istanbul Asia/Istanbul
.sp
.fi
@@ -717,7 +708,7 @@ For example:
.sp
.ne 3
.nf
-.in +2m
+.in +2
.ta \w'Zone\0\0'u +\w'Greenwich\0\0'u
Link Greenwich G_M_T
Link Etc/GMT Greenwich
@@ -727,23 +718,23 @@ Zone Etc/GMT\0\00\0\0\*-\0\0GMT
.fi
The two links are chained together, and G_M_T, Greenwich, and Etc/GMT
all name the same zone.
-.P
+.PP
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.
-.P
+.PP
The file that describes leap seconds can have leap lines and an
expiration line.
Leap lines have the following form:
.nf
-.ti +.5i
+.ti +2
.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u
.sp
Leap YEAR MONTH DAY HH:MM:SS CORR R/S
.sp
For example:
-.ti +.5i
+.ti +2
.sp
Leap 2016 Dec 31 23:59:60 + S
.sp
@@ -775,7 +766,7 @@ or
.q "Rolling"
if the leap second time given by the other fields should be interpreted as
local (wall clock) time.
-.P
+.PP
Rolling leap seconds were implemented back when it was not
clear whether common practice was rolling or stationary,
with concerns that one would see
@@ -788,16 +779,16 @@ which means rolling leap seconds are not used in practice;
also, they are not supported if the
.B \*-r
option is used.
-.P
+.PP
The expiration line, if present, has the form:
.nf
-.ti +.5i
+.ti +2
.ta \w'Expires\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u
.sp
Expires YEAR MONTH DAY HH:MM:SS
.sp
For example:
-.ti +.5i
+.ti +2
.sp
Expires 2020 Dec 28 00:00:00
.sp
@@ -816,7 +807,7 @@ Here is an extended example of
.B zic
input, intended to illustrate many of its features.
.nf
-.in +2m
+.in +2
.ta \w'# Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'\*-\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
.sp
# Rule NAME FROM TO \*- IN ON AT SAVE LETTER/S
@@ -856,7 +847,7 @@ and Swiss daylight saving rules (defined with lines beginning with
.q "Rule Swiss")
apply. From 1981 to the present, EU daylight saving rules have
applied, and the UTC offset has remained at one hour.
-.P
+.PP
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
@@ -864,7 +855,7 @@ 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.
-.P
+.PP
For purposes of display,
.q "LMT"
and
@@ -886,7 +877,7 @@ you may need to use local standard time in the
.B AT
field of the earliest transition time's rule to ensure that
the earliest transition time recorded in the compiled file is correct.
-.P
+.PP
If,
for a particular timezone,
a clock advance caused by the start of daylight saving