summaryrefslogtreecommitdiffstats
path: root/man3/strftime.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/strftime.3')
-rw-r--r--man3/strftime.3272
1 files changed, 272 insertions, 0 deletions
diff --git a/man3/strftime.3 b/man3/strftime.3
new file mode 100644
index 000000000..45029e2f7
--- /dev/null
+++ b/man3/strftime.3
@@ -0,0 +1,272 @@
+.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\" Linux libc source code
+.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\" 386BSD man pages
+.\" GNU texinfo documentation on glibc date/time functions.
+.\" Modified Sat Jul 24 18:03:44 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Applied fix by Wolfgang Franke, aeb, 961011
+.\" Corrected return value, aeb, 970307
+.\" Added Single Unix Spec conversions and %z, aeb/esr, 990329.
+.\"
+.TH STRFTIME 3 1999-03-29 "GNU" "Linux Programmer's Manual"
+.SH NAME
+strftime \- format date and time
+.SH SYNOPSIS
+.nf
+.B #include <time.h>
+.sp
+.BI "size_t strftime(char *" s ", size_t " max ", const char *" format ,
+.BI " const struct tm *" tm );
+.fi
+.SH DESCRIPTION
+The \fBstrftime()\fP function formats the broken-down time \fItm\fP
+according to the format specification \fIformat\fP and places the
+result in the character array \fIs\fP of size \fImax\fP.
+.PP
+Ordinary characters placed in the format string are copied to \fIs\fP
+without conversion. Conversion specifiers are introduced by a `%'
+character, and are replaced in \fIs\fP as follows:
+.TP
+.B %a
+The abbreviated weekday name according to the current locale.
+.TP
+.B %A
+The full weekday name according to the current locale.
+.TP
+.B %b
+The abbreviated month name according to the current locale.
+.TP
+.B %B
+The full month name according to the current locale.
+.TP
+.B %c
+The preferred date and time representation for the current locale.
+.TP
+.B %C
+The century number (year/100) as a 2-digit integer. (SU)
+.TP
+.B %d
+The day of the month as a decimal number (range 01 to 31).
+.TP
+.B %D
+Equivalent to %m/%d/%y. (Yecch - for Americans only.
+Americans should note that in other countries %d/%m/%y is rather
+common. This means that in international context this format is
+ambiguous and should not be used.) (SU)
+.TP
+.B %e
+Like %d, the day of the month as a decimal number, but a leading
+zero is replaced by a space. (SU)
+.TP
+.B %E
+Modifier: use alternative format, see below. (SU)
+.TP
+.B %F
+Equivalent to %Y-%m-%d (the ISO 8601 date format). (C99)
+.TP
+.B %G
+The ISO 8601 year with century as a decimal number.
+The 4-digit year corresponding to the ISO week number (see %V).
+This has the same format and value as %y, except that if the
+ISO week number belongs to the previous or next year,
+that year is used instead. (TZ)
+.TP
+.B %g
+Like %G, but without century, i.e., with a 2-digit year (00-99). (TZ)
+.TP
+.B %h
+Equivalent to %b. (SU)
+.TP
+.B %H
+The hour as a decimal number using a 24-hour clock (range 00 to 23).
+.TP
+.B %I
+The hour as a decimal number using a 12-hour clock (range 01 to 12).
+.TP
+.B %j
+The day of the year as a decimal number (range 001 to 366).
+.TP
+.B %k
+The hour (24-hour clock) as a decimal number (range 0 to 23);
+single digits are preceded by a blank. (See also %H.) (TZ)
+.TP
+.B %l
+The hour (12-hour clock) as a decimal number (range 1 to 12);
+single digits are preceded by a blank. (See also %I.) (TZ)
+.TP
+.B %m
+The month as a decimal number (range 01 to 12).
+.TP
+.B %M
+The minute as a decimal number (range 00 to 59).
+.TP
+.B %n
+A newline character. (SU)
+.TP
+.B %O
+Modifier: use alternative format, see below. (SU)
+.TP
+.B %p
+Either `AM' or `PM' according to the given time value, or the
+corresponding strings for the current locale.
+Noon is treated as `pm' and midnight as `am'.
+.TP
+.B %P
+Like %p but in lowercase: `am' or `pm' or a corresponding
+string for the current locale. (GNU)
+.TP
+.B %r
+The time in a.m. or p.m. notation.
+In the POSIX locale this is equivalent to `%I:%M:%S %p'. (SU)
+.TP
+.B %R
+The time in 24-hour notation (%H:%M). (SU)
+For a version including the seconds, see %T below.
+.TP
+.B %s
+The number of seconds since the Epoch, i.e., since 1970-01-01
+00:00:00 UTC. (TZ)
+.TP
+.B %S
+The second as a decimal number (range 00 to 61).
+.TP
+.B %t
+A tab character. (SU)
+.TP
+.B %T
+The time in 24-hour notation (%H:%M:%S). (SU)
+.TP
+.B %u
+The day of the week as a decimal, range 1 to 7, Monday being 1.
+See also %w. (SU)
+.TP
+.B %U
+The week number of the current year as a decimal number,
+range 00 to 53, starting with the first Sunday as the first day
+of week 01. See also %V and %W.
+.TP
+.B %V
+The ISO 8601:1988 week number of the current year as a decimal number,
+range 01 to 53, where week 1 is the first week that has at least
+4 days in the current year, and with Monday as the first day of
+the week. See also %U and %W. (SU)
+.TP
+.B %w
+The day of the week as a decimal, range 0 to 6, Sunday being 0.
+See also %u.
+.TP
+.B %W
+The week number of the current year as a decimal number,
+range 00 to 53, starting with the first Monday as the first day of week 01.
+.TP
+.B %x
+The preferred date representation for the current locale without the time.
+.TP
+.B %X
+The preferred time representation for the current locale without the date.
+.TP
+.B %y
+The year as a decimal number without a century (range 00 to 99).
+.TP
+.B %Y
+The year as a decimal number including the century.
+.TP
+.B %z
+The time-zone as hour offset from GMT.
+Required to emit RFC822-conformant dates
+(using "%a, %d %b %Y %H:%M:%S %z"). (GNU)
+.TP
+.B %Z
+The time zone or name or abbreviation.
+.TP
+.B %+
+The date and time in date(1) format. (TZ)
+.TP
+.B %%
+A literal `%' character.
+.PP
+Some conversion specifiers can be modified by preceding them
+by the E or O modifier to indicate that an alternative format
+should be used.
+If the alternative format or specification does not exist for
+the current locale, the behaviour will be as if the unmodified
+conversion specification were used. (SU)
+The Single Unix Specification mentions %Ec, %EC, %Ex, %EX,
+%Ry, %EY, %Od, %Oe, %OH, %OI, %Om, %OM, %OS, %Ou, %OU, %OV,
+%Ow, %OW, %Oy, where the effect of the O modifier is to use
+alternative numeric symbols (say, roman numerals), and that of the
+E modifier is to use a locale-dependent alternative representation.
+.PP
+The broken-down time structure \fItm\fP is defined in \fI<time.h>\fP.
+See also
+.BR ctime (3).
+
+.SH "RETURN VALUE"
+The \fBstrftime()\fP function returns the number of characters placed
+in the array \fIs\fP, not including the terminating NUL character,
+provided the string, including the terminating NUL, fits.
+Otherwise, it returns 0, and the contents of the array is undefined.
+(Thus at least since libc 4.4.4; very old versions of libc,
+such as libc 4.4.1, would return \fImax\fP if the array was too small.)
+.LP
+Note that the return value 0 does not necessarily indicate an error;
+for example, in many locales %p yields an empty string.
+.SH ENVIRONMENT
+The environment variables TZ and LC_TIME are used.
+.SH "CONFORMING TO"
+ANSI C, SVID 3, ISO 9899.
+There are strict inclusions between the set of conversions
+given in ANSI C (unmarked), those given in the Single Unix Specification
+(marked SU), those given in Olson's timezone package (marked TZ),
+and those given in glibc (marked GNU), except that %+ is not supported
+in glibc2. On the other hand glibc2 has several more extensions.
+POSIX.1 only refers to ANSI C; POSIX.2 describes under
+.BR date (1)
+several extensions that could apply to
+.B strftime
+as well.
+The %F conversion is in C99 and POSIX 1003.1-2001.
+.SH BUGS
+Some buggy versions of gcc complain about the use of %c:
+.IR "warning: `%c' yields only last 2 digits of year in some locales" .
+Of course programmers are encouraged to use %c, it gives the preferred
+date and time representation. One meets all kinds of strange obfuscations
+to circumvent this gcc problem. A relatively clean one is to add an
+intermediate function
+.RS
+size_t my_strftime(char *s, size_t max, const char *fmt,
+const struct tm *tm) {
+.br
+ return strftime(s, max, fmt, tm);
+.br
+}
+.RE
+.SH "SEE ALSO"
+.BR date (1),
+.BR time (2),
+.BR ctime (3),
+.BR setlocale (3),
+.BR sprintf (3),
+.BR strptime (3)