mirror of
https://frontier.innolan.net/rainlance/amiga-tz.git
synced 2025-10-05 22:42:06 +00:00
Amiga Time Zone Library initial commit
This commit is contained in:
203
doc/date.1
Normal file
203
doc/date.1
Normal file
@ -0,0 +1,203 @@
|
||||
.TH DATE 1
|
||||
.SH NAME
|
||||
date \- show and set date and time
|
||||
.SH SYNOPSIS
|
||||
.if n .nh
|
||||
.if n .na
|
||||
.ie \n(.g .ds - \f(CW-\fP
|
||||
.el ds - \-
|
||||
.B date
|
||||
[
|
||||
.B \*-u
|
||||
] [
|
||||
.B \*-c
|
||||
] [
|
||||
.B \*-r
|
||||
.I seconds
|
||||
] [
|
||||
.B \*-n
|
||||
] [
|
||||
.B \*-d
|
||||
.I dsttype
|
||||
] [
|
||||
.B \*-t
|
||||
.I minutes-west
|
||||
] [
|
||||
\fB\*-a \fR[\fB+\fR|\fB\*-]\fIsss\fB.\fIfff\fR
|
||||
] [
|
||||
.BI + format
|
||||
] [
|
||||
\fR[\fIyyyy\fR]\fImmddhhmm\fR[\fIyy\fR][\fB.\fIss\fR]
|
||||
]
|
||||
.SH DESCRIPTION
|
||||
.ie '\(lq'' .ds lq \&"\"
|
||||
.el .ds lq \(lq\"
|
||||
.ie '\(rq'' .ds rq \&"\"
|
||||
.el .ds rq \(rq\"
|
||||
.de q
|
||||
\\$3\*(lq\\$1\*(rq\\$2
|
||||
..
|
||||
.I Date
|
||||
without arguments writes the date and time to the standard output in
|
||||
the form
|
||||
.ce 1
|
||||
Wed Mar 8 14:54:40 EST 1989
|
||||
.br
|
||||
with
|
||||
.B EST
|
||||
replaced by the local time zone's abbreviation
|
||||
(or by the abbreviation for the time zone specified in the
|
||||
.B TZ
|
||||
environment variable if set).
|
||||
The exact output format depends on the locale.
|
||||
.PP
|
||||
If a command-line argument starts with a plus sign (\c
|
||||
.q "\fB+\fP" ),
|
||||
the rest of the argument is used as a
|
||||
.I format
|
||||
that controls what appears in the output.
|
||||
In the format, when a percent sign (\c
|
||||
.q "\fB%\fP"
|
||||
appears,
|
||||
it and the character after it are not output,
|
||||
but rather identify part of the date or time
|
||||
to be output in a particular way
|
||||
(or identify a special character to output):
|
||||
.nf
|
||||
.sp
|
||||
.if t .in +.5i
|
||||
.if n .in +2
|
||||
.ta \w'%M\0\0'u +\w'Wed Mar 8 14:54:40 EST 1989\0\0'u
|
||||
Sample output Explanation
|
||||
%a Wed Abbreviated weekday name*
|
||||
%A Wednesday Full weekday name*
|
||||
%b Mar Abbreviated month name*
|
||||
%B March Full month name*
|
||||
%c Wed Mar 08 14:54:40 1989 Date and time*
|
||||
%C 19 Century
|
||||
%d 08 Day of month (always two digits)
|
||||
%D 03/08/89 Month/day/year (eight characters)
|
||||
%e 8 Day of month (leading zero blanked)
|
||||
%h Mar Abbreviated month name*
|
||||
%H 14 24-hour-clock hour (two digits)
|
||||
%I 02 12-hour-clock hour (two digits)
|
||||
%j 067 Julian day number (three digits)
|
||||
%k 2 12-hour-clock hour (leading zero blanked)
|
||||
%l 14 24-hour-clock hour (leading zero blanked)
|
||||
%m 03 Month number (two digits)
|
||||
%M 54 Minute (two digits)
|
||||
%n \\n newline character
|
||||
%p PM AM/PM designation
|
||||
%r 02:54:40 PM Hour:minute:second AM/PM designation
|
||||
%R 14:54 Hour:minute
|
||||
%S 40 Second (two digits)
|
||||
%t \\t tab character
|
||||
%T 14:54:40 Hour:minute:second
|
||||
%U 10 Sunday-based week number (two digits)
|
||||
%w 3 Day number (one digit, Sunday is 0)
|
||||
%W 10 Monday-based week number (two digits)
|
||||
%x 03/08/89 Date*
|
||||
%X 14:54:40 Time*
|
||||
%y 89 Last two digits of year
|
||||
%Y 1989 Year in full
|
||||
%Z EST Time zone abbreviation
|
||||
%+ Wed Mar 8 14:54:40 EST 1989 Default output format*
|
||||
.if t .in -.5i
|
||||
.if n .in -2
|
||||
* The exact output depends on the locale.
|
||||
.sp
|
||||
.fi
|
||||
If a character other than one of those shown above appears after
|
||||
a percent sign in the format,
|
||||
that following character is output.
|
||||
All other characters in the format are copied unchanged to the output;
|
||||
a newline character is always added at the end of the output.
|
||||
.PP
|
||||
In Sunday-based week numbering,
|
||||
the first Sunday of the year begins week 1;
|
||||
days preceding it are part of
|
||||
.q "week 0" .
|
||||
In Monday-based week numbering,
|
||||
the first Monday of the year begins week 1.
|
||||
.PP
|
||||
To set the date, use a command line argument with one of the following forms:
|
||||
.nf
|
||||
.if t .in +.5i
|
||||
.if n .in +2
|
||||
.ta \w'198903081454\0'u
|
||||
1454 24-hour-clock hours (first two digits) and minutes
|
||||
081454 Month day (first two digits), hours, and minutes
|
||||
03081454 Month (two digits, January is 01), month day, hours, minutes
|
||||
8903081454 Year, month, month day, hours, minutes
|
||||
0308145489 Month, month day, hours, minutes, year
|
||||
(on System V-compatible systems)
|
||||
030814541989 Month, month day, hours, minutes, four-digit year
|
||||
198903081454 Four-digit year, month, month day, hours, minutes
|
||||
.if t .in -.5i
|
||||
.if n .in -2
|
||||
.fi
|
||||
If the century, year, month, or month day is not given,
|
||||
the current value is used.
|
||||
Any of the above forms may be followed by a period and two digits that give
|
||||
the seconds part of the new time; if no seconds are given, zero is assumed.
|
||||
.PP
|
||||
These options are available:
|
||||
.TP
|
||||
.BR \*-u " or " \*-c
|
||||
Use Universal Time when setting and showing the date and time.
|
||||
.TP
|
||||
.BI "\*-r " seconds
|
||||
Output the date that corresponds to
|
||||
.I seconds
|
||||
past the epoch of 1970-01-01 00:00:00 UTC, where
|
||||
.I seconds
|
||||
should be an integer, either decimal, octal (leading 0), or
|
||||
hexadecimal (leading 0x), preceded by an optional sign.
|
||||
.TP
|
||||
.B \*-n
|
||||
Do not notify other networked systems of the time change.
|
||||
.TP
|
||||
.BI "\*-d " dsttype
|
||||
Set the kernel-stored Daylight Saving Time type to the given value.
|
||||
(The kernel-stored DST type is used mostly by
|
||||
.q "old"
|
||||
binaries.)
|
||||
.TP
|
||||
.BI "\*-t " minutes-west
|
||||
Set the kernel-stored
|
||||
.q "minutes west of UTC"
|
||||
value to the one given on the
|
||||
command line.
|
||||
(The kernel-stored DST type is used mostly by
|
||||
.q "old"
|
||||
binaries.)
|
||||
.TP
|
||||
.BI "\*-a " adjustment
|
||||
Change the time forward (or backward) by the number of seconds
|
||||
(and fractions thereof) specified in the
|
||||
.I adjustment
|
||||
argument.
|
||||
Either the seconds part or the fractions part of the argument (but not both)
|
||||
may be omitted.
|
||||
On BSD-based systems,
|
||||
the adjustment is made by changing the rate at which time advances;
|
||||
on System-V-based systems, the adjustment is made by changing the time.
|
||||
.SH FILES
|
||||
.ta \w'/usr/local/etc/zoneinfo/posixrules\0\0'u
|
||||
/usr/lib/locale/\f2L\fP/LC_TIME description of time locale \f2L\fP
|
||||
.br
|
||||
/usr/local/etc/zoneinfo time zone information directory
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style TZ's
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
.sp
|
||||
If
|
||||
.B /usr/local/etc/zoneinfo/GMT
|
||||
is absent,
|
||||
UTC leap seconds are loaded from
|
||||
.BR /usr/local/etc/zoneinfo/posixrules .
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
.\" 2009-05-17 by Arthur David Olson.
|
306
doc/newctime.3
Normal file
306
doc/newctime.3
Normal file
@ -0,0 +1,306 @@
|
||||
.TH NEWCTIME 3
|
||||
.SH NAME
|
||||
asctime, ctime, difftime, gmtime, localtime, mktime \- convert date and time
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.ie \n(.g .ds - \f(CW-\fP
|
||||
.el ds - \-
|
||||
.B #include <time.h>
|
||||
.PP
|
||||
.B extern char *tzname[2];
|
||||
.PP
|
||||
.B char *ctime(time_t const *clock);
|
||||
.PP
|
||||
.B char *ctime_r(time_t const *clock, char *buf);
|
||||
.PP
|
||||
.B double difftime(time_t time1, time_t time0);
|
||||
.PP
|
||||
.B char *asctime(struct tm const *tm);
|
||||
.PP
|
||||
.B "char *asctime_r(struct tm const *restrict tm,"
|
||||
.B " char *restrict result);"
|
||||
.PP
|
||||
.B struct tm *localtime(time_t const *clock);
|
||||
.PP
|
||||
.B "struct tm *localtime_r(time_t const *restrict clock,"
|
||||
.B " struct tm *restrict result);"
|
||||
.PP
|
||||
.B "struct tm *localtime_rz(timezone_t restrict zone,"
|
||||
.B " time_t const *restrict clock,"
|
||||
.B " struct tm *restrict result);"
|
||||
.PP
|
||||
.B struct tm *gmtime(time_t const *clock);
|
||||
.PP
|
||||
.B "struct tm *gmtime_r(time_t const *restrict clock,"
|
||||
.B " struct tm *restrict result);"
|
||||
.PP
|
||||
.B time_t mktime(struct tm *tm);
|
||||
.PP
|
||||
.B "time_t mktime_z(timezone_t restrict zone,"
|
||||
.B " struct tm *restrict tm);"
|
||||
.PP
|
||||
.B cc ... \*-ltz
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
.ie '\(en'' .ds en \-
|
||||
.el .ds en \(en
|
||||
.ie '\(lq'' .ds lq \&"\"
|
||||
.el .ds lq \(lq\"
|
||||
.ie '\(rq'' .ds rq \&"\"
|
||||
.el .ds rq \(rq\"
|
||||
.de q
|
||||
\\$3\*(lq\\$1\*(rq\\$2
|
||||
..
|
||||
.I Ctime
|
||||
converts a long integer, pointed to by
|
||||
.IR clock ,
|
||||
and returns a pointer to a
|
||||
string of the form
|
||||
.br
|
||||
.ce
|
||||
.eo
|
||||
Thu Nov 24 18:22:48 1986\n\0
|
||||
.br
|
||||
.ec
|
||||
Years requiring fewer than four characters are padded with leading zeroes.
|
||||
For years longer than four characters, the string is of the form
|
||||
.br
|
||||
.ce
|
||||
.eo
|
||||
Thu Nov 24 18:22:48 81986\n\0
|
||||
.ec
|
||||
.br
|
||||
with five spaces before the year.
|
||||
These unusual formats are designed to make it less likely that older
|
||||
software that expects exactly 26 bytes of output will mistakenly output
|
||||
misleading values for out-of-range years.
|
||||
.PP
|
||||
The
|
||||
.BI * clock
|
||||
time stamp represents the time in seconds since 1970-01-01 00:00:00
|
||||
Coordinated Universal Time (UTC).
|
||||
The POSIX standard says that time stamps must be nonnegative
|
||||
and must ignore leap seconds.
|
||||
Many implementations extend POSIX by allowing negative time stamps,
|
||||
and can therefore represent time stamps that predate the
|
||||
introduction of UTC and are some other flavor of Universal Time (UT).
|
||||
Some implementations support leap seconds, in contradiction to POSIX.
|
||||
.PP
|
||||
.I Localtime
|
||||
and
|
||||
.I gmtime
|
||||
return pointers to
|
||||
.q "tm"
|
||||
structures, described below.
|
||||
.I Localtime
|
||||
corrects for the time zone and any time zone adjustments
|
||||
(such as Daylight Saving Time in the United States).
|
||||
After filling in the
|
||||
.q "tm"
|
||||
structure,
|
||||
.I localtime
|
||||
sets the
|
||||
.BR tm_isdst 'th
|
||||
element of
|
||||
.B tzname
|
||||
to a pointer to a string that's the time zone abbreviation to be used with
|
||||
.IR localtime 's
|
||||
return value.
|
||||
.PP
|
||||
.I Gmtime
|
||||
converts to Coordinated Universal Time.
|
||||
.PP
|
||||
.I Asctime
|
||||
converts a time value contained in a
|
||||
.q "tm"
|
||||
structure to a string,
|
||||
as shown in the above example,
|
||||
and returns a pointer to the string.
|
||||
.PP
|
||||
.I Mktime
|
||||
converts the broken-down time,
|
||||
expressed as local time,
|
||||
in the structure pointed to by
|
||||
.I tm
|
||||
into a calendar time value with the same encoding as that of the values
|
||||
returned by the
|
||||
.I time
|
||||
function.
|
||||
The original values of the
|
||||
.B tm_wday
|
||||
and
|
||||
.B tm_yday
|
||||
components of the structure are ignored,
|
||||
and the original values of the other components are not restricted
|
||||
to their normal ranges.
|
||||
(A positive or zero value for
|
||||
.B tm_isdst
|
||||
causes
|
||||
.I mktime
|
||||
to presume initially that summer time (for example, Daylight Saving Time
|
||||
in the U.S.A.)
|
||||
respectively,
|
||||
is or is not in effect for the specified time.
|
||||
A negative value for
|
||||
.B tm_isdst
|
||||
causes the
|
||||
.I mktime
|
||||
function to attempt to divine whether summer time is in effect
|
||||
for the specified time; in this case it does not use a consistent
|
||||
rule and may give a different answer when later
|
||||
presented with the same argument.)
|
||||
On successful completion, the values of the
|
||||
.B tm_wday
|
||||
and
|
||||
.B tm_yday
|
||||
components of the structure are set appropriately,
|
||||
and the other components are set to represent the specified calendar time,
|
||||
but with their values forced to their normal ranges; the final value of
|
||||
.B tm_mday
|
||||
is not set until
|
||||
.B tm_mon
|
||||
and
|
||||
.B tm_year
|
||||
are determined.
|
||||
.I Mktime
|
||||
returns the specified calendar time;
|
||||
If the calendar time cannot be represented,
|
||||
it returns \-1.
|
||||
.PP
|
||||
.I Difftime
|
||||
returns the difference between two calendar times,
|
||||
.RI ( time1
|
||||
\-
|
||||
.IR time0 ),
|
||||
expressed in seconds.
|
||||
.PP
|
||||
.IR Ctime_r ,
|
||||
.IR localtime_r ,
|
||||
.IR gmtime_r ,
|
||||
and
|
||||
.I asctime_r
|
||||
are like their unsuffixed counterparts, except that they accept an
|
||||
additional argument specifying where to store the result if successful.
|
||||
.PP
|
||||
.IR Localtime_rz
|
||||
and
|
||||
.I mktime_z
|
||||
are like their unsuffixed counterparts, except that they accept an
|
||||
extra initial
|
||||
.B zone
|
||||
argument specifying the time zone to be used for conversion.
|
||||
If
|
||||
.B zone
|
||||
is null, UTC is used; otherwise,
|
||||
.B zone
|
||||
should be have been allocated by
|
||||
.I tzalloc
|
||||
and should not be freed until after all uses (e.g., by calls to
|
||||
.IR strftime )
|
||||
of the filled-in
|
||||
.B tm_zone
|
||||
fields.
|
||||
.PP
|
||||
Declarations of all the functions and externals, and the
|
||||
.q "tm"
|
||||
structure,
|
||||
are in the
|
||||
.B <time.h>
|
||||
header file.
|
||||
The structure (of type)
|
||||
.B struct tm
|
||||
includes the following fields:
|
||||
.RS
|
||||
.PP
|
||||
.nf
|
||||
.ta .5i +\w'long tm_gmtoff;\0\0'u
|
||||
int tm_sec; /\(** seconds (0\*(en60) \(**/
|
||||
int tm_min; /\(** minutes (0\*(en59) \(**/
|
||||
int tm_hour; /\(** hours (0\*(en23) \(**/
|
||||
int tm_mday; /\(** day of month (1\*(en31) \(**/
|
||||
int tm_mon; /\(** month of year (0\*(en11) \(**/
|
||||
int tm_year; /\(** year \- 1900 \(**/
|
||||
int tm_wday; /\(** day of week (Sunday = 0) \(**/
|
||||
int tm_yday; /\(** day of year (0\*(en365) \(**/
|
||||
int tm_isdst; /\(** is summer time in effect? \(**/
|
||||
char \(**tm_zone; /\(** abbreviation of time zone name \(**/
|
||||
long tm_gmtoff; /\(** offset from UT in seconds \(**/
|
||||
.fi
|
||||
.RE
|
||||
.PP
|
||||
The
|
||||
.I tm_zone
|
||||
and
|
||||
.I tm_gmtoff
|
||||
fields exist, and are filled in, only if arrangements to do
|
||||
so were made when the library containing these functions was
|
||||
created.
|
||||
There is no guarantee that these fields will continue to exist
|
||||
in this form in future releases of this code.
|
||||
.PP
|
||||
.I Tm_isdst
|
||||
is non-zero if summer time is in effect.
|
||||
.PP
|
||||
.I Tm_gmtoff
|
||||
is the offset (in seconds) of the time represented
|
||||
from UT, with positive values indicating east
|
||||
of the Prime Meridian.
|
||||
The field's name is derived from Greenwich Mean Time, a precursor of UT.
|
||||
.SH FILES
|
||||
.ta \w'/usr/local/etc/zoneinfo/posixrules\0\0'u
|
||||
/usr/local/etc/zoneinfo time zone information directory
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style TZ's
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
.sp
|
||||
If
|
||||
.B /usr/local/etc/zoneinfo/GMT
|
||||
is absent,
|
||||
UTC leap seconds are loaded from
|
||||
.BR /usr/local/etc/zoneinfo/posixrules .
|
||||
.SH SEE ALSO
|
||||
getenv(3),
|
||||
newstrftime(3),
|
||||
newtzset(3),
|
||||
time(2),
|
||||
tzfile(5)
|
||||
.SH NOTES
|
||||
The return values of
|
||||
.IR asctime ,
|
||||
.IR ctime ,
|
||||
.IR gmtime ,
|
||||
and
|
||||
.I localtime
|
||||
point to static data
|
||||
overwritten by each call.
|
||||
The
|
||||
.B tm_zone
|
||||
field of a returned
|
||||
.B "struct tm"
|
||||
points to a static array of characters, which
|
||||
can be overwritten by later calls to
|
||||
.IR tzset .
|
||||
The remaining functions and data are thread-safe.
|
||||
.PP
|
||||
.IR Asctime ,
|
||||
.IR asctime_r ,
|
||||
.IR ctime ,
|
||||
and
|
||||
.I ctime_r
|
||||
behave strangely for years before 1000 or after 9999.
|
||||
The 1989 and 1999 editions of the C Standard say
|
||||
that years from \-99 through 999 are converted without
|
||||
extra spaces, but this conflicts with longstanding
|
||||
tradition and with this implementation.
|
||||
The 2011 edition says that the behavior
|
||||
is undefined if the year is before 1000 or after 9999.
|
||||
Traditional implementations of these two functions are
|
||||
restricted to years in the range 1900 through 2099.
|
||||
To avoid this portability mess, new programs should use
|
||||
.I strftime
|
||||
instead.
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
.\" 2009-05-17 by Arthur David Olson.
|
230
doc/newstrftime.3
Normal file
230
doc/newstrftime.3
Normal file
@ -0,0 +1,230 @@
|
||||
.\" Based on the UCB file whose copyright information appears below.
|
||||
.\" Copyright (c) 1989, 1991 The Regents of the University of California.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" This code is derived from software contributed to Berkeley by
|
||||
.\" the American National Standards Committee X3, on Information
|
||||
.\" Processing Systems.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" from: @(#)strftime.3 5.12 (Berkeley) 6/29/91
|
||||
.\" $Id: strftime.3,v 1.4 1993/12/15 20:33:00 jtc Exp $
|
||||
.\"
|
||||
.TH NEWSTRFTIME 3
|
||||
.SH NAME
|
||||
strftime \- format date and time
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.ie \n(.g .ds - \f(CW-\fP
|
||||
.el ds - \-
|
||||
.B #include <time.h>
|
||||
.PP
|
||||
.B "size_t strftime(char *restrict buf, size_t maxsize,"
|
||||
.B " char const *restrict format, struct tm const *restrict timeptr);"
|
||||
.PP
|
||||
.B cc ... \-ltz
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
.ie '\(en'' .ds en \-
|
||||
.el .ds en \(en
|
||||
The
|
||||
.I strftime
|
||||
function formats the information from
|
||||
.I timeptr
|
||||
into the buffer
|
||||
.I buf
|
||||
according to the string pointed to by
|
||||
.IR format .
|
||||
.PP
|
||||
The
|
||||
.I format
|
||||
string consists of zero or more conversion specifications and
|
||||
ordinary characters.
|
||||
All ordinary characters are copied directly into the buffer.
|
||||
A conversion specification consists of a percent sign
|
||||
.Ql %
|
||||
and one other character.
|
||||
.PP
|
||||
No more than
|
||||
.I maxsize
|
||||
characters are placed into the array.
|
||||
If the total number of resulting characters, including the terminating
|
||||
null character, is not more than
|
||||
.IR maxsize ,
|
||||
.I strftime
|
||||
returns the number of characters in the array, not counting the
|
||||
terminating null.
|
||||
Otherwise, zero is returned.
|
||||
.PP
|
||||
Each conversion specification is replaced by the characters as
|
||||
follows which are then copied into the buffer.
|
||||
.TP
|
||||
%A
|
||||
is replaced by the locale's full weekday name.
|
||||
.TP
|
||||
%a
|
||||
is replaced by the locale's abbreviated weekday name.
|
||||
.TP
|
||||
%B
|
||||
is replaced by the locale's full month name.
|
||||
.TP
|
||||
%b or %h
|
||||
is replaced by the locale's abbreviated month name.
|
||||
.TP
|
||||
%C
|
||||
is replaced by the century (a year divided by 100 and truncated to an integer)
|
||||
as a decimal number (00\*(en99).
|
||||
.TP
|
||||
%c
|
||||
is replaced by the locale's appropriate date and time representation.
|
||||
.TP
|
||||
%D
|
||||
is replaced by the date in the format %m/%d/%y.
|
||||
.TP
|
||||
%d
|
||||
is replaced by the day of the month as a decimal number (01\*(en31).
|
||||
.TP
|
||||
%e
|
||||
is replaced by the day of month as a decimal number (1\*(en31);
|
||||
single digits are preceded by a blank.
|
||||
.TP
|
||||
%F
|
||||
is replaced by the date in the format %Y\*-%m\*-%d.
|
||||
.TP
|
||||
%G
|
||||
is replaced by the ISO 8601 year with century as a decimal number.
|
||||
.TP
|
||||
%g
|
||||
is replaced by the ISO 8601 year without century as a decimal number (00\*(en99).
|
||||
.TP
|
||||
%H
|
||||
is replaced by the hour (24-hour clock) as a decimal number (00\*(en23).
|
||||
.TP
|
||||
%I
|
||||
is replaced by the hour (12-hour clock) as a decimal number (01\*(en12).
|
||||
.TP
|
||||
%j
|
||||
is replaced by the day of the year as a decimal number (001\*(en366).
|
||||
.TP
|
||||
%k
|
||||
is replaced by the hour (24-hour clock) as a decimal number (0\*(en23);
|
||||
single digits are preceded by a blank.
|
||||
.TP
|
||||
%l
|
||||
is replaced by the hour (12-hour clock) as a decimal number (1\*(en12);
|
||||
single digits are preceded by a blank.
|
||||
.TP
|
||||
%M
|
||||
is replaced by the minute as a decimal number (00\*(en59).
|
||||
.TP
|
||||
%m
|
||||
is replaced by the month as a decimal number (01\*(en12).
|
||||
.TP
|
||||
%n
|
||||
is replaced by a newline.
|
||||
.TP
|
||||
%p
|
||||
is replaced by the locale's equivalent of either AM or PM.
|
||||
.TP
|
||||
%R
|
||||
is replaced by the time in the format %H:%M.
|
||||
.TP
|
||||
%r
|
||||
is replaced by the locale's representation of 12-hour clock time
|
||||
using AM/PM notation.
|
||||
.TP
|
||||
%S
|
||||
is replaced by the second as a decimal number (00\*(en60).
|
||||
.TP
|
||||
%s
|
||||
is replaced by the number of seconds since the Epoch (see newctime(3)).
|
||||
.TP
|
||||
%T
|
||||
is replaced by the time in the format %H:%M:%S.
|
||||
.TP
|
||||
%t
|
||||
is replaced by a tab.
|
||||
.TP
|
||||
%U
|
||||
is replaced by the week number of the year (Sunday as the first day of
|
||||
the week) as a decimal number (00\*(en53).
|
||||
.TP
|
||||
%u
|
||||
is replaced by the weekday (Monday as the first day of the week)
|
||||
as a decimal number (1\*(en7).
|
||||
.TP
|
||||
%V
|
||||
is replaced by the week number of the year (Monday as the first day of
|
||||
the week) as a decimal number (01\*(en53). If the week containing January
|
||||
1 has four or more days in the new year, then it is week 1; otherwise
|
||||
it is week 53 of the previous year, and the next week is week 1.
|
||||
.TP
|
||||
%W
|
||||
is replaced by the week number of the year (Monday as the first day of
|
||||
the week) as a decimal number (00\*(en53).
|
||||
.TP
|
||||
%w
|
||||
is replaced by the weekday (Sunday as the first day of the week)
|
||||
as a decimal number (0\*(en6).
|
||||
.TP
|
||||
%X
|
||||
is replaced by the locale's appropriate time representation.
|
||||
.TP
|
||||
%x
|
||||
is replaced by the locale's appropriate date representation.
|
||||
.TP
|
||||
%Y
|
||||
is replaced by the year with century as a decimal number.
|
||||
.TP
|
||||
%y
|
||||
is replaced by the year without century as a decimal number (00\*(en99).
|
||||
.TP
|
||||
%Z
|
||||
is replaced by the time zone name,
|
||||
or by the empty string if this is not determinable.
|
||||
.TP
|
||||
%z
|
||||
is replaced by the offset from the Prime Meridian
|
||||
in the format +HHMM or \*-HHMM as appropriate,
|
||||
with positive values representing locations east of Greenwich,
|
||||
or by the empty string if this is not determinable.
|
||||
.TP
|
||||
%%
|
||||
is replaced by a single %.
|
||||
.TP
|
||||
%+
|
||||
is replaced by the date and time in date(1) format.
|
||||
.SH SEE ALSO
|
||||
date(1),
|
||||
getenv(3),
|
||||
newctime(3),
|
||||
newtzset(3),
|
||||
time(2),
|
||||
tzfile(5)
|
326
doc/newtzset.3
Normal file
326
doc/newtzset.3
Normal file
@ -0,0 +1,326 @@
|
||||
.TH NEWTZSET 3
|
||||
.SH NAME
|
||||
tzset \- initialize time conversion information
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.ie \n(.g .ds - \f(CW-\fP
|
||||
.el ds - \-
|
||||
.B #include <time.h>
|
||||
.PP
|
||||
.B timezone_t tzalloc(char const *TZ);
|
||||
.PP
|
||||
.B void tzfree(timezone_t tz);
|
||||
.PP
|
||||
.B void tzset(void);
|
||||
.PP
|
||||
.B cc ... \*-ltz
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
.ie '\(en'' .ds en \-
|
||||
.el .ds en \(en
|
||||
.ie '\(lq'' .ds lq \&"\"
|
||||
.el .ds lq \(lq\"
|
||||
.ie '\(rq'' .ds rq \&"\"
|
||||
.el .ds rq \(rq\"
|
||||
.de q
|
||||
\\$3\*(lq\\$1\*(rq\\$2
|
||||
..
|
||||
.I Tzalloc
|
||||
allocates and returns a time zone object described by
|
||||
.BR TZ .
|
||||
If
|
||||
.B TZ
|
||||
is not a valid time zone description, or if the object cannot be allocated,
|
||||
.I tzalloc
|
||||
returns a null pointer and sets
|
||||
.BR errno .
|
||||
.PP
|
||||
.I Tzfree
|
||||
frees a time zone object
|
||||
.BR tz ,
|
||||
which should have been successfully allocated by
|
||||
.IR tzalloc .
|
||||
This invalidates any
|
||||
.B tm_zone
|
||||
pointers that
|
||||
.B tz
|
||||
was used to set.
|
||||
.PP
|
||||
.I Tzset
|
||||
acts like
|
||||
.BR tzalloc(getenv("TZ")) ,
|
||||
except it saves any resulting time zone object into internal
|
||||
storage that is accessed by
|
||||
.IR localtime ,
|
||||
.IR localtime_r ,
|
||||
and
|
||||
.IR mktime .
|
||||
The anonymous shared time zone object is freed by the next call to
|
||||
.IR tzset .
|
||||
If the implied call to
|
||||
.B tzalloc
|
||||
fails,
|
||||
.I tzset
|
||||
falls back on UTC.
|
||||
.PP
|
||||
If
|
||||
.B TZ
|
||||
is null, the best available approximation to local wall
|
||||
clock time, as specified by the
|
||||
.IR tzfile (5)-format
|
||||
file
|
||||
.B localtime
|
||||
in the system time conversion information directory, is used.
|
||||
If
|
||||
.B TZ
|
||||
is the empty string,
|
||||
Universal Time (UT) is used, with the abbreviation "UTC"
|
||||
and without leap second correction; please see
|
||||
.IR newctime (3)
|
||||
for more about UT, UTC, and leap seconds. If
|
||||
.B TZ
|
||||
is nonnull and nonempty:
|
||||
.IP
|
||||
if the value begins with a colon, it is used as a pathname of a file
|
||||
from which to read the time conversion information;
|
||||
.IP
|
||||
if the value does not begin with a colon, it is first used as the
|
||||
pathname of a file from which to read the time conversion information,
|
||||
and, if that file cannot be read, is used directly as a specification of
|
||||
the time conversion information.
|
||||
.PP
|
||||
When
|
||||
.B TZ
|
||||
is used as a pathname, if it begins with a slash,
|
||||
it is used as an absolute pathname; otherwise,
|
||||
it is used as a pathname relative to a system time conversion information
|
||||
directory.
|
||||
The file must be in the format specified in
|
||||
.IR tzfile (5).
|
||||
.PP
|
||||
When
|
||||
.B TZ
|
||||
is used directly as a specification of the time conversion information,
|
||||
it must have the following syntax (spaces inserted for clarity):
|
||||
.IP
|
||||
\fIstd\|offset\fR[\fIdst\fR[\fIoffset\fR][\fB,\fIrule\fR]]
|
||||
.PP
|
||||
Where:
|
||||
.RS
|
||||
.TP 15
|
||||
.IR std " and " dst
|
||||
Three or more bytes that are the designation for the standard
|
||||
.RI ( std )
|
||||
or summer
|
||||
.RI ( dst )
|
||||
time zone. Only
|
||||
.I std
|
||||
is required; if
|
||||
.I dst
|
||||
is missing, then summer time does not apply in this locale.
|
||||
Upper- and lowercase letters are explicitly allowed. Any characters
|
||||
except a leading colon
|
||||
.RB ( : ),
|
||||
digits, comma
|
||||
.RB ( , ),
|
||||
ASCII minus
|
||||
.RB ( \*- ),
|
||||
ASCII plus
|
||||
.RB ( + ),
|
||||
and NUL bytes are allowed.
|
||||
.TP
|
||||
.I offset
|
||||
Indicates the value one must add to the local time to arrive at
|
||||
Coordinated Universal Time. The
|
||||
.I offset
|
||||
has the form:
|
||||
.RS
|
||||
.IP
|
||||
\fIhh\fR[\fB:\fImm\fR[\fB:\fIss\fR]]
|
||||
.RE
|
||||
.IP
|
||||
The minutes
|
||||
.RI ( mm )
|
||||
and seconds
|
||||
.RI ( ss )
|
||||
are optional. The hour
|
||||
.RI ( hh )
|
||||
is required and may be a single digit. The
|
||||
.I offset
|
||||
following
|
||||
.I std
|
||||
is required. If no
|
||||
.I offset
|
||||
follows
|
||||
.IR dst ,
|
||||
summer time is assumed to be one hour ahead of standard time. One or
|
||||
more digits may be used; the value is always interpreted as a decimal
|
||||
number. The hour must be between zero and 24, and the minutes (and
|
||||
seconds) \*(en if present \*(en between zero and 59. If preceded by a
|
||||
.q "\*-" ,
|
||||
the time zone shall be east of the Prime Meridian; otherwise it shall be
|
||||
west (which may be indicated by an optional preceding
|
||||
.q "+" .
|
||||
.TP
|
||||
.I rule
|
||||
Indicates when to change to and back from summer time. The
|
||||
.I rule
|
||||
has the form:
|
||||
.RS
|
||||
.IP
|
||||
\fIdate\fB/\fItime\fB,\fIdate\fB/\fItime\fR
|
||||
.RE
|
||||
.IP
|
||||
where the first
|
||||
.I date
|
||||
describes when the change from standard to summer time occurs and the
|
||||
second
|
||||
.I date
|
||||
describes when the change back happens. Each
|
||||
.I time
|
||||
field describes when, in current local time, the change to the other
|
||||
time is made.
|
||||
As an extension to POSIX, daylight saving is assumed to be in effect
|
||||
all year if it begins January 1 at 00:00 and ends December 31 at
|
||||
24:00 plus the difference between daylight saving and standard time,
|
||||
leaving no room for standard time in the calendar.
|
||||
.IP
|
||||
The format of
|
||||
.I date
|
||||
is one of the following:
|
||||
.RS
|
||||
.TP 10
|
||||
.BI J n
|
||||
The Julian day
|
||||
.I n
|
||||
.RI "(1\ \(<=" "\ n\ " "\(<=\ 365).
|
||||
Leap days are not counted; that is, in all years \*(en including leap
|
||||
years \*(en February 28 is day 59 and March 1 is day 60. It is
|
||||
impossible to explicitly refer to the occasional February 29.
|
||||
.TP
|
||||
.I n
|
||||
The zero-based Julian day
|
||||
.RI "(0\ \(<=" "\ n\ " "\(<=\ 365).
|
||||
Leap days are counted, and it is possible to refer to February 29.
|
||||
.TP
|
||||
.BI M m . n . d
|
||||
The
|
||||
.IR d' th
|
||||
day
|
||||
.RI "(0\ \(<=" "\ d\ " "\(<=\ 6)
|
||||
of week
|
||||
.I n
|
||||
of month
|
||||
.I m
|
||||
of the year
|
||||
.RI "(1\ \(<=" "\ n\ " "\(<=\ 5,
|
||||
.RI "1\ \(<=" "\ m\ " "\(<=\ 12,
|
||||
where week 5 means
|
||||
.q "the last \fId\fP day in month \fIm\fP"
|
||||
which may occur in either the fourth or the fifth week). Week 1 is the
|
||||
first week in which the
|
||||
.IR d' th
|
||||
day occurs. Day zero is Sunday.
|
||||
.RE
|
||||
.IP "" 15
|
||||
The
|
||||
.I time
|
||||
has the same format as
|
||||
.I offset
|
||||
except that POSIX does not allow a leading sign (\c
|
||||
.q "\*-"
|
||||
or
|
||||
.q "+" ).
|
||||
As an extension to POSIX, the hours part of
|
||||
.I time
|
||||
can range from \-167 through 167; this allows for unusual rules such
|
||||
as
|
||||
.q "the Saturday before the first Sunday of March" .
|
||||
The default, if
|
||||
.I time
|
||||
is not given, is
|
||||
.BR 02:00:00 .
|
||||
.RE
|
||||
.LP
|
||||
Here are some examples of
|
||||
.B TZ
|
||||
values that directly specify the time zone rules; they use some of the
|
||||
extensions to POSIX.
|
||||
.TP
|
||||
.B EST5
|
||||
stands for US Eastern Standard
|
||||
Time (EST), 5 hours behind UTC, without daylight saving.
|
||||
.TP
|
||||
.B FJT\*-12FJST,M11.1.0,M1.3.4/75
|
||||
stands for Fiji Time (FJT) and Fiji Summer Time (FJST), 12 hours ahead
|
||||
of UTC, springing forward on November's first Sunday at 02:00, and
|
||||
falling back on January's third Thursday at 75:00 (i.e., 03:00 on the
|
||||
first Sunday on or after January 18).
|
||||
.TP
|
||||
.B IST\*-2IDT,M3.4.4/26,M10.5.0
|
||||
stands for Israel Standard Time (IST) and Israel Daylight Time (IDT),
|
||||
2 hours ahead of UTC, springing forward on March's fourth
|
||||
Thursday at 26:00 (i.e., 02:00 on the first Friday on or after March
|
||||
23), and falling back on October's last Sunday at 02:00.
|
||||
.TP
|
||||
.B WART4WARST,J1/0,J365/25
|
||||
stands for Western Argentina Summer Time (WARST), 3 hours behind UTC.
|
||||
There is a dummy fall-back transition on December 31 at 25:00 daylight
|
||||
saving time (i.e., 24:00 standard time, equivalent to January 1 at
|
||||
00:00 standard time), and a simultaneous spring-forward transition on
|
||||
January 1 at 00:00 standard time, so daylight saving time is in effect
|
||||
all year and the initial
|
||||
.B WART
|
||||
is a placeholder.
|
||||
.TP
|
||||
.B WGT3WGST,M3.5.0/\*-2,M10.5.0/\*-1
|
||||
stands for Western Greenland Time (WGT) and Western Greenland Summer
|
||||
Time (WGST), 3 hours behind UTC, where clocks follow the EU rules of
|
||||
springing forward on March's last Sunday at 01:00 UTC (\-02:00 local
|
||||
time) and falling back on October's last Sunday at 01:00 UTC
|
||||
(\-01:00 local time).
|
||||
.PP
|
||||
If no
|
||||
.I rule
|
||||
is present in
|
||||
.BR TZ ,
|
||||
the rules specified
|
||||
by the
|
||||
.IR tzfile (5)-format
|
||||
file
|
||||
.B posixrules
|
||||
in the system time conversion information directory are used, with the
|
||||
standard and summer time offsets from UTC replaced by those specified by
|
||||
the
|
||||
.I offset
|
||||
values in
|
||||
.BR TZ .
|
||||
.PP
|
||||
For compatibility with System V Release 3.1, a semicolon
|
||||
.RB ( ; )
|
||||
may be used to separate the
|
||||
.I rule
|
||||
from the rest of the specification.
|
||||
.SH FILES
|
||||
.ta \w'/usr/local/etc/zoneinfo/posixrules\0\0'u
|
||||
/usr/local/etc/zoneinfo time zone information directory
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/localtime local time zone file
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/posixrules used with POSIX-style TZ's
|
||||
.br
|
||||
/usr/local/etc/zoneinfo/GMT for UTC leap seconds
|
||||
.sp
|
||||
If
|
||||
.B /usr/local/etc/zoneinfo/GMT
|
||||
is absent,
|
||||
UTC leap seconds are loaded from
|
||||
.BR /usr/local/etc/zoneinfo/posixrules .
|
||||
.SH SEE ALSO
|
||||
getenv(3),
|
||||
newctime(3),
|
||||
newstrftime(3),
|
||||
time(2),
|
||||
tzfile(5)
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
.\" 2009-05-17 by Arthur David Olson.
|
156
doc/tzfile.5
Normal file
156
doc/tzfile.5
Normal file
@ -0,0 +1,156 @@
|
||||
.TH TZFILE 5
|
||||
.SH NAME
|
||||
tzfile \- time zone information
|
||||
.SH SYNOPSIS
|
||||
.B
|
||||
#include <tzfile.h>
|
||||
.SH DESCRIPTION
|
||||
The time zone information files used by
|
||||
.IR tzset (3)
|
||||
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:
|
||||
.TP
|
||||
.I tzh_ttisgmtcnt
|
||||
The number of UT/local indicators stored in the file.
|
||||
.TP
|
||||
.I tzh_ttisstdcnt
|
||||
The number of standard/wall indicators stored in the file.
|
||||
.TP
|
||||
.I tzh_leapcnt
|
||||
The number of leap seconds for which data entries are stored in the file.
|
||||
.TP
|
||||
.I tzh_timecnt
|
||||
The number of transition times for which data entries are stored
|
||||
in the file.
|
||||
.TP
|
||||
.I tzh_typecnt
|
||||
The number of local time types for which data entries are stored
|
||||
in the file (must not be zero).
|
||||
.TP
|
||||
.I tzh_charcnt
|
||||
The number of characters of time zone abbreviation strings
|
||||
stored in the file.
|
||||
.PP
|
||||
The above header is followed by
|
||||
.I 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
|
||||
.IR time (2))
|
||||
at which the rules for computing local time change.
|
||||
Next come
|
||||
.I 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
|
||||
.I ttinfo
|
||||
structures (with
|
||||
.I tzh_typecnt
|
||||
entries) that appears next in the file;
|
||||
these structures are defined as follows:
|
||||
.in +.5i
|
||||
.sp
|
||||
.nf
|
||||
.ta .5i +\w'unsigned char\0\0'u
|
||||
struct ttinfo {
|
||||
int32_t tt_gmtoff;
|
||||
unsigned char tt_isdst;
|
||||
unsigned char tt_abbrind;
|
||||
};
|
||||
.in -.5i
|
||||
.fi
|
||||
.sp
|
||||
Each structure is written as a four-byte signed integer value for
|
||||
.IR tt_gmtoff ,
|
||||
in a standard byte order, followed by a one-byte value for
|
||||
.I tt_isdst
|
||||
and a one-byte value for
|
||||
.IR tt_abbrind .
|
||||
In each structure,
|
||||
.I tt_gmtoff
|
||||
gives the number of seconds to be added to UT,
|
||||
.I tt_isdst
|
||||
tells whether
|
||||
.I tm_isdst
|
||||
should be set by
|
||||
.I localtime (3)
|
||||
and
|
||||
.I tt_abbrind
|
||||
serves as an index into the array of time zone abbreviation characters
|
||||
that follow the
|
||||
.I ttinfo
|
||||
structure(s) in the file.
|
||||
.PP
|
||||
Then there are
|
||||
.I tzh_leapcnt
|
||||
pairs of four-byte values, written in standard byte order;
|
||||
the first value of each pair gives the time
|
||||
(as returned by
|
||||
.IR time(2))
|
||||
at which a leap second occurs;
|
||||
the second gives the
|
||||
.I total
|
||||
number of leap seconds to be applied after the given time.
|
||||
The pairs of values are sorted in ascending order by time.
|
||||
.PP
|
||||
Then there are
|
||||
.I 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.
|
||||
.PP
|
||||
Finally there are
|
||||
.I 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.
|
||||
.PP
|
||||
.I Localtime
|
||||
uses the first standard-time
|
||||
.I ttinfo
|
||||
structure in the file
|
||||
(or simply the first
|
||||
.I ttinfo
|
||||
structure in the absence of a standard-time structure)
|
||||
if either
|
||||
.I tzh_timecnt
|
||||
is zero or the time argument is less than the first transition time recorded
|
||||
in the file.
|
||||
.PP
|
||||
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).
|
||||
.PP
|
||||
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
|
||||
.IR 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.
|
||||
.PP
|
||||
Future changes to the format may append more data.
|
||||
.SH SEE ALSO
|
||||
newctime(3), newtzset(3), zdump(8), zic(8)
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
.\" 1996-06-05 by Arthur David Olson.
|
92
doc/zdump.8
Normal file
92
doc/zdump.8
Normal file
@ -0,0 +1,92 @@
|
||||
.TH ZDUMP 8
|
||||
.SH NAME
|
||||
zdump \- time zone dumper
|
||||
.SH SYNOPSIS
|
||||
.B zdump
|
||||
[
|
||||
.I option
|
||||
\&... ] [
|
||||
.I zonename
|
||||
\&... ]
|
||||
.SH DESCRIPTION
|
||||
.ie \n(.g .ds - \f(CW-\fP
|
||||
.el ds - \-
|
||||
.I Zdump
|
||||
prints the current time in each
|
||||
.I zonename
|
||||
named on the command line.
|
||||
.PP
|
||||
These options are available:
|
||||
.TP
|
||||
.BI "\*-\*-version"
|
||||
Output version information and exit.
|
||||
.TP
|
||||
.B \*-v
|
||||
For each
|
||||
.I 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
|
||||
.BI isdst= D
|
||||
where
|
||||
.I 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
|
||||
.BI gmtoff= N
|
||||
if the given local time is known to be
|
||||
.I N
|
||||
seconds east of Greenwich.
|
||||
.TP
|
||||
.B \*-V
|
||||
Like
|
||||
.BR \*-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.
|
||||
.TP
|
||||
.BI "\*-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
|
||||
.I loyear
|
||||
of 1970 excludes a transition occurring at 1970-01-01 00:00:00 UTC but a
|
||||
.I hiyear
|
||||
of 1970 includes the transition.
|
||||
The default cutoff is
|
||||
.BR \*-500,2500 .
|
||||
.TP
|
||||
.BI "\*-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
|
||||
.I zonename
|
||||
determines whether the count includes leap seconds.
|
||||
As with
|
||||
.BR \*-c ,
|
||||
the cutoff's lower bound is exclusive and its upper bound is inclusive.
|
||||
.SH LIMITATIONS
|
||||
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.
|
||||
.PP
|
||||
In the output, "UT" denotes the value returned by
|
||||
.IR gmtime (3),
|
||||
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.
|
||||
.SH "SEE ALSO"
|
||||
newctime(3), tzfile(5), zic(8)
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
.\" 2009-05-17 by Arthur David Olson.
|
563
doc/zic.8
Normal file
563
doc/zic.8
Normal file
@ -0,0 +1,563 @@
|
||||
.TH ZIC 8
|
||||
.SH NAME
|
||||
zic \- time zone compiler
|
||||
.SH SYNOPSIS
|
||||
.B zic
|
||||
[
|
||||
.I option
|
||||
\&... ] [
|
||||
.I filename
|
||||
\&... ]
|
||||
.SH DESCRIPTION
|
||||
.ie '\(lq'' .ds lq \&"\"
|
||||
.el .ds lq \(lq\"
|
||||
.ie '\(rq'' .ds rq \&"\"
|
||||
.el .ds rq \(rq\"
|
||||
.de q
|
||||
\\$3\*(lq\\$1\*(rq\\$2
|
||||
..
|
||||
.ie '\(la'' .ds < <
|
||||
.el .ds < \(la
|
||||
.ie '\(ra'' .ds > >
|
||||
.el .ds > \(ra
|
||||
.ie \n(.g \{\
|
||||
. ds : \:
|
||||
. ds - \f(CW-\fP
|
||||
.\}
|
||||
.el \{\
|
||||
. ds :
|
||||
. el ds - \-
|
||||
.\}
|
||||
.I 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
|
||||
.I filename
|
||||
is
|
||||
.q "\*-" ,
|
||||
the standard input is read.
|
||||
.PP
|
||||
These options are available:
|
||||
.TP
|
||||
.BI "\*-\*-version"
|
||||
Output version information and exit.
|
||||
.TP
|
||||
.BI "\*-d " directory
|
||||
Create time conversion information files in the named directory rather than
|
||||
in the standard directory named below.
|
||||
.TP
|
||||
.BI "\*-l " timezone
|
||||
Use the given time zone as local time.
|
||||
.I Zic
|
||||
will act as if the input contained a link line of the form
|
||||
.sp
|
||||
.ti +.5i
|
||||
Link \fItimezone\fP localtime
|
||||
.TP
|
||||
.BI "\*-p " timezone
|
||||
Use the given time zone's rules when handling POSIX-format
|
||||
time zone environment variables.
|
||||
.I Zic
|
||||
will act as if the input contained a link line of the form
|
||||
.sp
|
||||
.ti +.5i
|
||||
Link \fItimezone\fP posixrules
|
||||
.TP
|
||||
.BI "\*-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.
|
||||
.TP
|
||||
.B \*-v
|
||||
Be more verbose, and complain about the following situations:
|
||||
.RS
|
||||
.PP
|
||||
The input specifies a link to a link.
|
||||
.PP
|
||||
A year that appears in a data file is outside the range
|
||||
of years representable by
|
||||
.IR time (2)
|
||||
values.
|
||||
.PP
|
||||
A time of 24:00 or more appears in the input.
|
||||
Pre-1998 versions of
|
||||
.I zic
|
||||
prohibit 24:00, and pre-2007 versions prohibit times greater than 24:00.
|
||||
.PP
|
||||
A rule goes past the start or end of the month.
|
||||
Pre-2004 versions of
|
||||
.I zic
|
||||
prohibit this.
|
||||
.PP
|
||||
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.
|
||||
.PP
|
||||
The output contains data that may not be handled properly by client
|
||||
code designed for older
|
||||
.I zic
|
||||
output formats. These compatibility issues affect only time stamps
|
||||
before 1970 or after the start of 2038.
|
||||
.PP
|
||||
A time zone abbreviation has fewer than 3 characters.
|
||||
POSIX requires at least 3.
|
||||
.PP
|
||||
An output file name contains a byte that is not an ASCII letter,
|
||||
.q "\*-" ,
|
||||
.q "/" ,
|
||||
or
|
||||
.q "_" ;
|
||||
or it contains a file name component that contains more than 14 bytes
|
||||
or that starts with
|
||||
.q "\*-" .
|
||||
.RE
|
||||
.TP
|
||||
.B \*-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.
|
||||
.TP
|
||||
.BI "\*-y " command
|
||||
Use the given
|
||||
.I command
|
||||
rather than
|
||||
.B yearistype
|
||||
when checking year types (see below).
|
||||
.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 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
|
||||
.B \*-v
|
||||
option.
|
||||
.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,
|
||||
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.
|
||||
.PP
|
||||
Names (such as month names) must be in English and are case insensitive.
|
||||
Abbreviations, if used, must be unambiguous in context.
|
||||
.PP
|
||||
A rule line has the form
|
||||
.nf
|
||||
.ti +.5i
|
||||
.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\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 TYPE IN ON AT SAVE LETTER/S
|
||||
.sp
|
||||
For example:
|
||||
.ti +.5i
|
||||
.sp
|
||||
Rule US 1967 1973 \*- Apr lastSun 2:00 1:00 D
|
||||
.sp
|
||||
.fi
|
||||
The fields that make up a rule line are:
|
||||
.TP "\w'LETTER/S'u"
|
||||
.B NAME
|
||||
Gives the (arbitrary) name of the set of rules this rule is part of.
|
||||
.TP
|
||||
.B FROM
|
||||
Gives the first year in which the rule applies.
|
||||
Any integer year can be supplied; the proleptic Gregorian calendar is assumed.
|
||||
The word
|
||||
.B minimum
|
||||
(or an abbreviation) means the minimum year representable as an integer.
|
||||
The word
|
||||
.B 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.
|
||||
.TP
|
||||
.B TO
|
||||
Gives the final year in which the rule applies.
|
||||
In addition to
|
||||
.B minimum
|
||||
and
|
||||
.B maximum
|
||||
(as above),
|
||||
the word
|
||||
.B only
|
||||
(or an abbreviation)
|
||||
may be used to repeat the value of the
|
||||
.B FROM
|
||||
field.
|
||||
.TP
|
||||
.B TYPE
|
||||
Gives the type of year in which the rule applies.
|
||||
If
|
||||
.B TYPE
|
||||
is
|
||||
.q \*-
|
||||
then the rule applies in all years between
|
||||
.B FROM
|
||||
and
|
||||
.B TO
|
||||
inclusive.
|
||||
If
|
||||
.B TYPE
|
||||
is something else, then
|
||||
.I zic
|
||||
executes the command
|
||||
.ti +.5i
|
||||
\fByearistype\fP \fIyear\fP \fItype\fP
|
||||
.br
|
||||
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.
|
||||
.TP
|
||||
.B IN
|
||||
Names the month in which the rule takes effect.
|
||||
Month names may be abbreviated.
|
||||
.TP
|
||||
.B ON
|
||||
Gives the day on which the rule takes effect.
|
||||
Recognized forms include:
|
||||
.nf
|
||||
.in +.5i
|
||||
.sp
|
||||
.ta \w'Sun<=25\0\0'u
|
||||
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
|
||||
.fi
|
||||
.in -.5i
|
||||
.sp
|
||||
Names of days of the week may be abbreviated or spelled out in full.
|
||||
Note that there must be no spaces within the
|
||||
.B ON
|
||||
field.
|
||||
.TP
|
||||
.B AT
|
||||
Gives the time of day at which the rule takes effect.
|
||||
Recognized forms include:
|
||||
.nf
|
||||
.in +.5i
|
||||
.sp
|
||||
.ta \w'1:28:13\0\0'u
|
||||
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
|
||||
.fi
|
||||
.in -.5i
|
||||
.sp
|
||||
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
|
||||
.B w
|
||||
if the given time is local
|
||||
.q "wall clock"
|
||||
time,
|
||||
.B s
|
||||
if the given time is local
|
||||
.q "standard"
|
||||
time, or
|
||||
.B u
|
||||
(or
|
||||
.B g
|
||||
or
|
||||
.BR 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
|
||||
.B AT
|
||||
field would show the specified date and time of day.
|
||||
.TP
|
||||
.B 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
|
||||
.B AT
|
||||
field
|
||||
(although, of course, the
|
||||
.B w
|
||||
and
|
||||
.B s
|
||||
suffixes are not used).
|
||||
.TP
|
||||
.B LETTER/S
|
||||
Gives the
|
||||
.q "variable part"
|
||||
(for example, the
|
||||
.q "S"
|
||||
or
|
||||
.q "D"
|
||||
in
|
||||
.q "EST"
|
||||
or
|
||||
.q "EDT" )
|
||||
of time zone abbreviations to be used when this rule is in effect.
|
||||
If this field is
|
||||
.q \*- ,
|
||||
the variable part is null.
|
||||
.PP
|
||||
A zone line has the form
|
||||
.sp
|
||||
.nf
|
||||
.ti +.5i
|
||||
.ta \w'Zone\0\0'u +\w'Australia/Adelaide\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u
|
||||
Zone NAME GMTOFF RULES/SAVE FORMAT [UNTILYEAR [MONTH [DAY [TIME]]]]
|
||||
.sp
|
||||
For example:
|
||||
.sp
|
||||
.ti +.5i
|
||||
Zone Australia/Adelaide 9:30 Aus AC%sT 1971 Oct 31 2:00
|
||||
.sp
|
||||
.fi
|
||||
The fields that make up a zone line are:
|
||||
.TP "\w'GMTOFF'u"
|
||||
.B 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
|
||||
.q ".\&"
|
||||
or
|
||||
.q ".." ;
|
||||
a file name component is a maximal substring that does not contain
|
||||
.q "/" .
|
||||
.TP
|
||||
.B GMTOFF
|
||||
The amount of time to add to UT to get standard time in this zone.
|
||||
This field has the same format as the
|
||||
.B AT
|
||||
and
|
||||
.B SAVE
|
||||
fields of rule lines;
|
||||
begin the field with a minus sign if time must be subtracted from UT.
|
||||
.TP
|
||||
.B 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
|
||||
.B \*-
|
||||
then standard time always applies in the time zone.
|
||||
.TP
|
||||
.B FORMAT
|
||||
The format for time zone abbreviations in this time zone.
|
||||
The pair of characters
|
||||
.B %s
|
||||
is used to show where the
|
||||
.q "variable part"
|
||||
of the time zone abbreviation goes.
|
||||
Alternately,
|
||||
a slash (/)
|
||||
separates standard and daylight abbreviations.
|
||||
.TP
|
||||
.B 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.
|
||||
.IP
|
||||
The next line must be a
|
||||
.q "continuation"
|
||||
line; this has the same form as a zone line except that the
|
||||
string
|
||||
.q "Zone"
|
||||
and the name are omitted, as the continuation line will
|
||||
place information starting at the time specified as the
|
||||
.q "until"
|
||||
information in the previous line in the file used by the previous line.
|
||||
Continuation lines may contain
|
||||
.q "until"
|
||||
information, just as zone lines do, indicating that the next line is a further
|
||||
continuation.
|
||||
.PP
|
||||
A link line has the form
|
||||
.sp
|
||||
.nf
|
||||
.ti +.5i
|
||||
.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u
|
||||
Link TARGET LINK-NAME
|
||||
.sp
|
||||
For example:
|
||||
.sp
|
||||
.ti +.5i
|
||||
Link Europe/Istanbul Asia/Istanbul
|
||||
.sp
|
||||
.fi
|
||||
The
|
||||
.B TARGET
|
||||
field should appear as the
|
||||
.B NAME
|
||||
field in some zone line.
|
||||
The
|
||||
.B LINK-NAME
|
||||
field is used as an alternate name for that zone;
|
||||
it has the same syntax as a zone line's
|
||||
.B NAME
|
||||
field.
|
||||
.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, or if the source of one link line is the target
|
||||
of another.
|
||||
.PP
|
||||
Lines in the file that describes leap seconds have the following form:
|
||||
.nf
|
||||
.ti +.5i
|
||||
.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
|
||||
.sp
|
||||
Leap 1974 Dec 31 23:59:60 + S
|
||||
.sp
|
||||
.fi
|
||||
The
|
||||
.BR YEAR ,
|
||||
.BR MONTH ,
|
||||
.BR DAY ,
|
||||
and
|
||||
.B HH:MM:SS
|
||||
fields tell when the leap second happened.
|
||||
The
|
||||
.B CORR
|
||||
field
|
||||
should be
|
||||
.q "+"
|
||||
if a second was added
|
||||
or
|
||||
.q "\*-"
|
||||
if a second was skipped.
|
||||
.\" There's no need to document the following, since it's impossible for more
|
||||
.\" than one leap second to be inserted or deleted at a time.
|
||||
.\" The C Standard is in error in suggesting the possibility.
|
||||
.\" See Terry J Quinn, The BIPM and the accurate measure of time,
|
||||
.\" Proc IEEE 79, 7 (July 1991), 894-905.
|
||||
.\" or
|
||||
.\" .q ++
|
||||
.\" if two seconds were added
|
||||
.\" or
|
||||
.\" .q --
|
||||
.\" if two seconds were skipped.
|
||||
The
|
||||
.B R/S
|
||||
field
|
||||
should be (an abbreviation of)
|
||||
.q "Stationary"
|
||||
if the leap second time given by the other fields should be interpreted as UTC
|
||||
or
|
||||
(an abbreviation of)
|
||||
.q "Rolling"
|
||||
if the leap second time given by the other fields should be interpreted as
|
||||
local wall clock time.
|
||||
.SH "EXTENDED EXAMPLE"
|
||||
Here is an extended example of
|
||||
.I zic
|
||||
input, intended to illustrate many of its features.
|
||||
.br
|
||||
.ne 22
|
||||
.nf
|
||||
.in +2m
|
||||
.ta \w'# Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\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 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 \*-
|
||||
.sp .5
|
||||
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 \*-
|
||||
.sp
|
||||
.ta \w'# Zone\0\0'u +\w'Europe/Zurich\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u
|
||||
# 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
|
||||
.sp
|
||||
Link Europe/Zurich Switzerland
|
||||
.sp
|
||||
.in
|
||||
.fi
|
||||
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 7\(de\|26\(fm\|22.50\(sd; 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.
|
||||
.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
|
||||
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.
|
||||
.PP
|
||||
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.
|
||||
.SH NOTES
|
||||
For areas with more than two types of local time,
|
||||
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.
|
||||
.PP
|
||||
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,
|
||||
.IR 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.
|
||||
.PP
|
||||
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.
|
||||
.SH FILE
|
||||
/usr/local/etc/zoneinfo standard directory used for created files
|
||||
.SH "SEE ALSO"
|
||||
newctime(3), tzfile(5), zdump(8)
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
.\" 2009-05-17 by Arthur David Olson.
|
Reference in New Issue
Block a user