1993-10-31 19:07:46 -05:00
|
|
|
.TH TIME2POSIX 3
|
|
|
|
|
.SH NAME
|
|
|
|
|
time2posix, posix2time \- convert seconds since the Epoch
|
|
|
|
|
.SH SYNOPSIS
|
|
|
|
|
.nf
|
2014-06-28 16:35:14 -07:00
|
|
|
.ie \n(.g .ds - \f(CW-\fP
|
|
|
|
|
.el ds - \-
|
1993-10-31 19:07:46 -05:00
|
|
|
.B #include <time.h>
|
|
|
|
|
.PP
|
2014-08-22 17:44:10 -07:00
|
|
|
.B time_t time2posix(time_t t);
|
1993-10-31 19:07:46 -05:00
|
|
|
.PP
|
2014-08-22 17:44:10 -07:00
|
|
|
.B time_t posix2time(time_t t);
|
1993-10-31 19:07:46 -05:00
|
|
|
.PP
|
2014-06-28 16:35:14 -07:00
|
|
|
.B cc ... \*-ltz
|
1993-10-31 19:07:46 -05:00
|
|
|
.fi
|
|
|
|
|
.SH DESCRIPTION
|
Don't abuse "`" to mean open quote.
This was appropriate before Unicode, where "`" and "'" often balanced
in visual output, but that's been obsolete for a while.
Overall, single-quote 'like this' instead of `like this', and
double-quote "like this" or (in typeset output) “like this”
instead of ``like this''. While we're at it, fix some glitches
with hyphens versus minus versus en dash versus em dash.
* Makefile ($(MANTXTS)): Use UTF-8 locale to produce *.txt output.
* checktab.awk, tzselect.ksh:
Quote 'like this' in diagnostics, instead of `like this'.
* date.1, newctime.3, newtzset.3, time2posix.3, zic.8 (q, lq, rq):
New macros. Use them for better double-quoting in output.
* workman.sh: Tell Perl that its stdin and stdout are UTF-8.
* NEWS: Document this.
2014-06-15 13:27:37 -07:00
|
|
|
.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
|
|
|
|
|
..
|
1993-10-31 19:07:46 -05:00
|
|
|
IEEE Standard 1003.1
|
|
|
|
|
(POSIX)
|
2014-08-12 19:00:04 -07:00
|
|
|
requires the time_t value 536457599 to stand for 1986-12-31 23:59:59 UTC.
|
|
|
|
|
This effectively implies that POSIX time_t values cannot include leap
|
1993-10-31 19:07:46 -05:00
|
|
|
seconds and,
|
|
|
|
|
therefore,
|
|
|
|
|
that the system time must be adjusted as each leap occurs.
|
|
|
|
|
.PP
|
|
|
|
|
If the time package is configured with leap-second support
|
|
|
|
|
enabled,
|
|
|
|
|
however,
|
|
|
|
|
no such adjustment is needed and
|
|
|
|
|
time_t values continue to increase over leap events
|
Don't abuse "`" to mean open quote.
This was appropriate before Unicode, where "`" and "'" often balanced
in visual output, but that's been obsolete for a while.
Overall, single-quote 'like this' instead of `like this', and
double-quote "like this" or (in typeset output) “like this”
instead of ``like this''. While we're at it, fix some glitches
with hyphens versus minus versus en dash versus em dash.
* Makefile ($(MANTXTS)): Use UTF-8 locale to produce *.txt output.
* checktab.awk, tzselect.ksh:
Quote 'like this' in diagnostics, instead of `like this'.
* date.1, newctime.3, newtzset.3, time2posix.3, zic.8 (q, lq, rq):
New macros. Use them for better double-quoting in output.
* workman.sh: Tell Perl that its stdin and stdout are UTF-8.
* NEWS: Document this.
2014-06-15 13:27:37 -07:00
|
|
|
(as a true
|
|
|
|
|
.q "seconds since..."
|
|
|
|
|
value).
|
1993-10-31 19:07:46 -05:00
|
|
|
This means that these values will differ from those required by POSIX
|
|
|
|
|
by the net number of leap seconds inserted since the Epoch.
|
|
|
|
|
.PP
|
|
|
|
|
Typically this is not a problem as the type time_t is intended
|
|
|
|
|
to be
|
|
|
|
|
(mostly)
|
Don't abuse "`" to mean open quote.
This was appropriate before Unicode, where "`" and "'" often balanced
in visual output, but that's been obsolete for a while.
Overall, single-quote 'like this' instead of `like this', and
double-quote "like this" or (in typeset output) “like this”
instead of ``like this''. While we're at it, fix some glitches
with hyphens versus minus versus en dash versus em dash.
* Makefile ($(MANTXTS)): Use UTF-8 locale to produce *.txt output.
* checktab.awk, tzselect.ksh:
Quote 'like this' in diagnostics, instead of `like this'.
* date.1, newctime.3, newtzset.3, time2posix.3, zic.8 (q, lq, rq):
New macros. Use them for better double-quoting in output.
* workman.sh: Tell Perl that its stdin and stdout are UTF-8.
* NEWS: Document this.
2014-06-15 13:27:37 -07:00
|
|
|
opaque \*(en time_t values should only be obtained-from and
|
1993-10-31 19:07:46 -05:00
|
|
|
passed-to functions such as
|
|
|
|
|
.IR time(2) ,
|
|
|
|
|
.IR localtime(3) ,
|
|
|
|
|
.IR mktime(3) ,
|
|
|
|
|
and
|
1993-11-22 12:34:51 -05:00
|
|
|
.IR difftime(3) .
|
1993-10-31 19:07:46 -05:00
|
|
|
However,
|
|
|
|
|
POSIX gives an arithmetic
|
|
|
|
|
expression for directly computing a time_t value from a given date/time,
|
|
|
|
|
and the same relationship is assumed by some
|
|
|
|
|
(usually older)
|
|
|
|
|
applications.
|
|
|
|
|
Any programs creating/dissecting time_t's
|
|
|
|
|
using such a relationship will typically not handle intervals
|
|
|
|
|
over leap seconds correctly.
|
|
|
|
|
.PP
|
|
|
|
|
The
|
|
|
|
|
.I time2posix
|
|
|
|
|
and
|
|
|
|
|
.I posix2time
|
|
|
|
|
functions are provided to address this time_t mismatch by converting
|
|
|
|
|
between local time_t values and their POSIX equivalents.
|
|
|
|
|
This is done by accounting for the number of time-base changes that
|
|
|
|
|
would have taken place on a POSIX system as leap seconds were inserted
|
|
|
|
|
or deleted.
|
|
|
|
|
These converted values can then be used in lieu of correcting the older
|
|
|
|
|
applications,
|
|
|
|
|
or when communicating with POSIX-compliant systems.
|
|
|
|
|
.PP
|
|
|
|
|
.I Time2posix
|
|
|
|
|
is single-valued.
|
|
|
|
|
That is,
|
|
|
|
|
every local time_t
|
|
|
|
|
corresponds to a single POSIX time_t.
|
|
|
|
|
.I Posix2time
|
|
|
|
|
is less well-behaved:
|
|
|
|
|
for a positive leap second hit the result is not unique,
|
|
|
|
|
and for a negative leap second hit the corresponding
|
|
|
|
|
POSIX time_t doesn't exist so an adjacent value is returned.
|
|
|
|
|
Both of these are good indicators of the inferiority of the
|
|
|
|
|
POSIX representation.
|
|
|
|
|
.PP
|
|
|
|
|
The following table summarizes the relationship between a time
|
|
|
|
|
T and it's conversion to,
|
|
|
|
|
and back from,
|
|
|
|
|
the POSIX representation over the leap second inserted at the end of June,
|
|
|
|
|
1993.
|
|
|
|
|
.nf
|
|
|
|
|
.ta \w'93/06/30 'u +\w'23:59:59 'u +\w'A+0 'u +\w'X=time2posix(T) 'u
|
|
|
|
|
DATE TIME T X=time2posix(T) posix2time(X)
|
|
|
|
|
93/06/30 23:59:59 A+0 B+0 A+0
|
|
|
|
|
93/06/30 23:59:60 A+1 B+1 A+1 or A+2
|
|
|
|
|
93/07/01 00:00:00 A+2 B+1 A+1 or A+2
|
|
|
|
|
93/07/01 00:00:01 A+3 B+2 A+3
|
|
|
|
|
|
|
|
|
|
A leap second deletion would look like...
|
|
|
|
|
|
|
|
|
|
DATE TIME T X=time2posix(T) posix2time(X)
|
|
|
|
|
??/06/30 23:59:58 A+0 B+0 A+0
|
|
|
|
|
??/07/01 00:00:00 A+1 B+2 A+1
|
|
|
|
|
??/07/01 00:00:01 A+2 B+3 A+2
|
|
|
|
|
.sp
|
|
|
|
|
.ce
|
|
|
|
|
[Note: posix2time(B+1) => A+0 or A+1]
|
|
|
|
|
.fi
|
|
|
|
|
.PP
|
|
|
|
|
If leap-second support is not enabled,
|
|
|
|
|
local time_t's and
|
|
|
|
|
POSIX time_t's are equivalent,
|
|
|
|
|
and both
|
|
|
|
|
.I time2posix
|
|
|
|
|
and
|
|
|
|
|
.I posix2time
|
|
|
|
|
degenerate to the identity function.
|
|
|
|
|
.SH SEE ALSO
|
|
|
|
|
difftime(3),
|
|
|
|
|
localtime(3),
|
|
|
|
|
mktime(3),
|
|
|
|
|
time(2)
|
1996-06-05 08:01:59 -04:00
|
|
|
.\" This file is in the public domain, so clarified as of
|
2005-07-14 14:06:17 -04:00
|
|
|
.\" 1996-06-05 by Arthur David Olson.
|