summaryrefslogtreecommitdiff
path: root/newstrftime.3
diff options
context:
space:
mode:
Diffstat (limited to 'newstrftime.3')
-rw-r--r--newstrftime.3129
1 files changed, 89 insertions, 40 deletions
diff --git a/newstrftime.3 b/newstrftime.3
index eee503e..887aba5 100644
--- a/newstrftime.3
+++ b/newstrftime.3
@@ -50,20 +50,22 @@ strftime \- format date and time
.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 c
+.ie \n(.g \f(CW\\$1\fP\\$2
+.el \\$1\\$2
+..
.de q
\\$3\*(lq\\$1\*(rq\\$2
..
The
-.I strftime
+.B strftime
function formats the information from
.I timeptr
-into the buffer
+into the array pointed to by
.I buf
according to the string pointed to by
.IR format .
@@ -72,24 +74,17 @@ The
.I format
string consists of zero or more conversion specifications and
ordinary characters.
-All ordinary characters are copied directly into the buffer.
+All ordinary characters are copied directly into the array.
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.
+bytes are placed into the array.
.PP
Each conversion specification is replaced by the characters as
-follows which are then copied into the buffer.
+follows which are then copied into the array.
.TP
%A
is replaced by the locale's full weekday name.
@@ -105,99 +100,122 @@ 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).
+as a decimal number [00,99].
.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.
+is equivalent to
+.c %m/%d/%y .
.TP
%d
-is replaced by the day of the month as a decimal number (01\*(en31).
+is replaced by the day of the month as a decimal number [01,31].
.TP
%e
-is replaced by the day of month as a decimal number (1\*(en31);
+is replaced by the day of month as a decimal number [1,31];
single digits are preceded by a blank.
.TP
%F
-is replaced by the date in the format %Y\*-%m\*-%d.
+is equivalent to
+.c %Y-%m-%d
+(the ISO 8601 date format).
.TP
%G
is replaced by the ISO 8601 year with century as a decimal number.
+See also the
+.c %V
+conversion specification.
.TP
%g
-is replaced by the ISO 8601 year without century as a decimal number (00\*(en99).
+is replaced by the ISO 8601 year without century as a decimal number [00,99].
+This is the year that includes the greater part of the week.
+(Monday as the first day of a week).
+See also the
+.c %V
+conversion specification.
.TP
%H
-is replaced by the hour (24-hour clock) as a decimal number (00\*(en23).
+is replaced by the hour (24-hour clock) as a decimal number [00,23].
.TP
%I
-is replaced by the hour (12-hour clock) as a decimal number (01\*(en12).
+is replaced by the hour (12-hour clock) as a decimal number [01,12].
.TP
%j
-is replaced by the day of the year as a decimal number (001\*(en366).
+is replaced by the day of the year as a decimal number [001,366].
.TP
%k
-is replaced by the hour (24-hour clock) as a decimal number (0\*(en23);
+is replaced by the hour (24-hour clock) as a decimal number [0,23];
single digits are preceded by a blank.
.TP
%l
-is replaced by the hour (12-hour clock) as a decimal number (1\*(en12);
+is replaced by the hour (12-hour clock) as a decimal number [1,12];
single digits are preceded by a blank.
.TP
%M
-is replaced by the minute as a decimal number (00\*(en59).
+is replaced by the minute as a decimal number [00,59].
.TP
%m
-is replaced by the month as a decimal number (01\*(en12).
+is replaced by the month as a decimal number [01,12].
.TP
%n
is replaced by a newline.
.TP
%p
-is replaced by the locale's equivalent of either AM or PM.
+is replaced by the locale's equivalent of either
+.q AM
+or
+.q PM .
.TP
%R
-is replaced by the time in the format %H:%M.
+is replaced by the time in the format
+.c %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).
+is replaced by the second as a decimal number [00,60].
+The range of
+seconds is [00,60] instead of [00,59] to allow for the periodic occurrence
+of leap seconds.
.TP
%s
-is replaced by the number of seconds since the Epoch (see newctime(3)).
+is replaced by the number of seconds since the Epoch (see
+.BR ctime (3)).
.TP
%T
-is replaced by the time in the format %H:%M:%S.
+is replaced by the time in the format
+.c %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).
+the week) as a decimal number [00,53].
.TP
%u
is replaced by the weekday (Monday as the first day of the week)
-as a decimal number (1\*(en7).
+as a decimal number [1,7].
.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
+the week) as a decimal number [01,53]. 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.
+The year is given by the
+.c %G
+conversion specification.
.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).
+the week) as a decimal number [00,53].
.TP
%w
is replaced by the weekday (Sunday as the first day of the week)
-as a decimal number (0\*(en6).
+as a decimal number [0,6].
.TP
%X
is replaced by the locale's appropriate time representation.
@@ -209,7 +227,7 @@ is replaced by the locale's appropriate date representation.
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).
+is replaced by the year without century as a decimal number [00,99].
.TP
%Z
is replaced by the time zone abbreviation,
@@ -217,7 +235,7 @@ 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,
+in the format +HHMM or \*-HHMM (ISO 8601) as appropriate,
with positive values representing locations east of Greenwich,
or by the empty string if this is not determinable.
The numeric time zone abbreviation \*-0000 is used when the time is
@@ -231,7 +249,36 @@ time zone abbreviation begins with
is replaced by a single %.
.TP
%+
-is replaced by the date and time in date(1) format.
+is replaced by the locale's date and time in
+.BR date (1)
+format.
+.SH "RETURN VALUE"
+If the conversion is successful,
+.B strftime
+returns the number of bytes placed into the array, not counting the
+terminating NUL;
+.B errno
+is unchanged if the returned value is zero.
+Otherwise,
+.B errno
+is set to indicate the error, zero is returned,
+and the array contents are unspecified.
+.SH ERRORS
+This function fails if:
+.TP
+[ERANGE]
+The total number of resulting bytes, including the terminating
+NUL character, is more than
+.IR maxsize .
+.PP
+This function may fail if:
+.TP
+[EOVERFLOW]
+The format includes an
+.c %s
+conversion and the number of seconds since the Epoch cannot be represented
+in a
+.c time_t .
.SH SEE ALSO
date(1),
getenv(3),
@@ -239,3 +286,5 @@ newctime(3),
newtzset(3),
time(2),
tzfile(5)
+.SH BUGS
+There is no conversion specification for the phase of the moon.