aboutsummaryrefslogtreecommitdiffstats
path: root/missing_d/strftime.3
diff options
context:
space:
mode:
Diffstat (limited to 'missing_d/strftime.3')
-rw-r--r--missing_d/strftime.3359
1 files changed, 359 insertions, 0 deletions
diff --git a/missing_d/strftime.3 b/missing_d/strftime.3
new file mode 100644
index 00000000..b017bf45
--- /dev/null
+++ b/missing_d/strftime.3
@@ -0,0 +1,359 @@
+.TH STRFTIME 3
+.SH NAME
+strftime \- generate formatted time information
+.SH SYNOPSIS
+.ft B
+.nf
+#include <sys/types.h>
+#include <time.h>
+.sp
+size_t strftime(char *s, size_t maxsize, const char *format,
+ const struct tm *timeptr);
+.fi
+.SH DESCRIPTION
+The following description is transcribed verbatim from the January 18, 1999
+draft standard for ISO C.
+This draft is essentially identical in technical content
+to the final version of the standard.
+.LP
+``The
+.B strftime
+function places characters into the array pointed to by
+.B s
+as controlled by the string pointed to by
+.BR format .
+The format shall be a multibyte character sequence, beginning and ending in
+its initial shift state.
+The
+.B format
+string consists of zero or more conversion specifiers and ordinary
+multibyte characters. A conversion specifier consists of a
+.B %
+character, possibly followed by an
+.B E
+or
+.B O
+modifier character (described below),
+followed by a character that determines the behavior of the
+conversion specifier.
+All ordinary multibyte characters (including the terminating null
+character) are copied unchanged into the array.
+If copying takes place between objects that overlap the behavior is undefined.
+No more than
+.B maxsize
+characters are placed into the array.
+.PP
+``Each conversion specifier is replaced by appropriate characters as described
+in the following list.
+The appropriate characters are determined by the
+.B LC_TIME
+category of the current locale and by the values
+of zero or more members of the broken-down time
+structure pointed to by
+.BR timeptr ,
+as specified by brackets in the description.
+If any of the specified values is outside the normal range, the characters
+stored are unspecified.''
+.TP
+.B %a
+is replaced by the locale's abbreviated weekday name.
+.TP
+.B %A
+is replaced by the locale's full weekday name.
+.TP
+.B %b
+is replaced by the locale's abbreviated month name.
+.TP
+.B %B
+is replaced by the locale's full month name.
+.TP
+.B %c
+is replaced by the locale's appropriate date and time representation.
+(This is
+.B "%A %B %d %T %Y"
+in the \fB"C"\fR
+locale.)
+.TP
+.B %C
+is replaced by the year divided by 100 and truncated to an integer,
+as a decimal number
+.RB ( 00 - 99 ).
+.TP
+.B %d
+is replaced by the day of the month as a decimal number
+.RB ( 01 - 31 ).
+.TP
+.B %D
+is equivalent to
+.BR %m/%d/%y .
+.TP
+.B %e
+is replaced by the day of the month as a decimal number
+.RB ( 1 - 31 );
+a single digit is preceded by a space.
+.TP
+.B %F
+is equivalent to
+.B %Y\-%m\-%d
+(the ISO 8601 date format).
+.TP
+.B %g
+is replaced by the year without century of the ISO week number
+as a decimal number
+.RB ( 00 - 99 ).
+.TP
+.B %G
+is replaced by the year with century of the ISO week number
+as a decimal number.
+.TP
+.B %h
+is equivalent to
+.BR %b .
+.TP
+.B %H
+is replaced by the hour (24-hour clock) as a decimal number
+.RB ( 00 - 23 ).
+.TP
+.B %I
+is replaced by the hour (12-hour clock) as a decimal number
+.RB ( 01 - 12 ).
+.TP
+.B %j
+is replaced by the day of the year as a decimal number
+.RB ( 001 - 366 ).
+.TP
+.B %m
+is replaced by the month as a decimal number
+.RB ( 01 - 12 ).
+.TP
+.B %M
+is replaced by the minute as a decimal number
+.RB ( 00 - 59 ).
+.TP
+.B %n
+is replaced with a newline character (\s-1ASCII LF\s+1).
+.TP
+.B %p
+is replaced by the locale's equivalent of the AM/PM designations associated
+with a 12-hour clock.
+.TP
+.B %r
+is replaced by the locale's 12-hour clock time.
+(This is
+.B "%I:%M:%S %p"
+in the \fB"C"\fR
+locale.)
+.TP
+.B %R
+is equivalent to
+.BR %H:%M .
+.TP
+.B %S
+is replaced by the second as a decimal number
+.RB ( 00 - 60 ).
+.TP
+.B %t
+is replaced with a \s-1TAB\s+1 character.
+.TP
+.B %T
+is equivalent to
+.BR %H:%M:%S .
+.TP
+.B %u
+is replaced by the ISO 8601 weekday as a decimal number
+.RB [ "1 " (Monday)- 7 ].
+.TP
+.B %U
+is replaced by the week number of the year (the first Sunday as the first
+day of week 1) as a decimal number
+.RB ( 00 - 53 ).
+.TP
+.B %V
+is replaced by the ISO 8601 week number of the year (the first Monday as the first
+day of week 1) as a decimal number
+.RB ( 01 - 53 ).
+.TP
+.B %w
+is replaced by the weekday as a decimal number
+.RB [ "0 " (Sunday)- 6 ].
+.TP
+.B %W
+is replaced by the week number of the year (the first Monday as the first
+day of week 1) as a decimal number
+.RB ( 00 - 53 ).
+.TP
+.B %x
+is replaced by the locale's appropriate date representation.
+(This is
+.B "%A %B %d %Y"
+in the \fB"C"\fR
+locale.)
+.TP
+.B %X
+is replaced by the locale's appropriate time representation.
+(This is
+.B "%T"
+in the \fB"C"\fR
+locale.)
+.TP
+.B %y
+is replaced by the year without century as a decimal number
+.RB ( 00 - 99 ).
+.TP
+.B %Y
+is replaced by the year with century as a decimal number.
+.TP
+.B %z
+The timezone offset in a +HHMM format (e.g. the format necessary to
+produce RFC-822/RFC-1036 date headers).
+.TP
+.B %Z
+is replaced by the time zone name or abbreviation, or by no characters if
+no time zone is determinable.
+.TP
+.B %%
+is replaced by
+.BR % .
+.LP
+If a conversion specifier is not one of the above, the behavior is
+undefined.
+.SH RETURNS
+If the total number of resulting characters including the terminating null
+character is not more than
+.BR maxsize ,
+the
+.B strftime
+function returns the number of characters placed into the array pointed to
+by
+.B s
+not including the terminating null character.
+Otherwise, zero is returned and the contents of the array are indeterminate.
+.SH ISO 8601
+The method for determining the week number as specified by ISO 8601 is:
+if the week containing January 1 has four or more days in the
+new year, then it is week 1, otherwise it is the highest numbered
+week of the previous year (52 or 53)
+and the next week is week 1.
+All days in a new year preceding the first Monday are considered to be
+in week 0.
+.PP
+For example, January 1, 1993, is in week 53 of 1992. Thus, the year
+of its ISO week number is 1992, even though its year is 1993.
+Similarly, December 31, 1973, is in week 1 of 1974. Thus, the year
+of its ISO week number is 1974, even though its year is 1973.
+.SH ALTERNATE REPRESENTATIONS
+The alternate representations
+.BR %Ec ,
+.BR %EC ,
+.BR %Ex ,
+.BR %EX ,
+.BR %Ey ,
+.BR %EY ,
+.BR %Od ,
+.BR %Oe ,
+.BR %OH ,
+.BR %OI ,
+.BR %Om ,
+.BR %OM ,
+.BR %OS ,
+.BR %Ou ,
+.BR %OU ,
+.BR %OV ,
+.BR %Ow ,
+.BR %OW ,
+and
+.B %Oy
+are recognized, but their normal representations are used.
+.SH NON-ISO EXTENSIONS
+.SS SunOS Extensions
+If
+.B SUNOS_EXT
+is defined when the routine is compiled, then the following additional
+conversions will be available.
+These are borrowed from the SunOS version of
+.IR strftime .
+.TP
+.B %k
+is replaced by the hour (24-hour clock) as a decimal number
+.RB ( 0 - 23 ).
+Single digit numbers are padded with a blank.
+.TP
+.B %l
+is replaced by the hour (12-hour clock) as a decimal number
+.RB ( 1 - 12 ).
+Single digit numbers are padded with a blank.
+.SS HP/UX Extensions
+If
+.B HPUX_EXT
+is defined when the routine is compiled, then the following additional
+conversions will be available.
+These are borrowed from the HP-UX version of
+.IR date .
+.TP
+.B %N
+The ``Emporer/Era'' name.
+Typically, this is equivalent to the century
+(same as
+.B %C ).
+.TP
+.B %o
+The ``Emporer/Era'' year.
+Typically, this is equivalent to the year
+(same as
+.B %y ).
+.SS VMS Extensions
+If
+.B VMS_EXT
+is defined, then the following additional conversion is available:
+.TP
+.B %v
+The date in VMS format (e.g. 20-JUN-1991).
+.SS Other Extensions
+If
+.B HAVE_MKTIME
+is defined, then this conversion is available:
+.TP
+.B %s
+The time in ``seconds since the Epoch,''
+usually Midnight January 1, 1970, UTC.
+.SH SEE ALSO
+.IR time (2),
+.IR ctime (3),
+.IR localtime (3),
+.IR mktime (3),
+.IR tzset (3)
+.SH BUGS
+This version does not handle multibyte characters or pay attention to the
+setting of the
+.B LC_TIME
+environment variable.
+.LP
+The ``appropriate'' values used for
+.BR %c ,
+.BR %x ,
+are
+.B %X
+are always those specified by the 1999 ISO C standard for the \fB"C"\fR locale.
+.SH CAVEATS
+The pre-processor symbol
+.B POSIX_SEMANTICS
+is automatically defined, which forces the code to call
+.IR tzset (3)
+whenever the
+.B TZ
+environment variable has changed.
+If this routine will be used in an application that will not be changing
+.BR TZ ,
+then there may be some performance improvements by not defining
+.BR POSIX_SEMANTICS .
+.SH AUTHOR
+Arnold Robbins <arnold@skeeve.com>
+.SH ACKNOWLEDGEMENTS
+Thanks to Geoff Clare <gwc@root.co.uk> for helping debug earlier
+versions of this routine, and for advice about POSIX semantics.
+Additional thanks to Arthur David Olsen <ado@elsie.nci.nih.gov>
+for some code improvements.
+Thanks also to Tor Lillqvist <tml@tik.vtt.fi>
+for code fixes to the ISO 8601 code.
+Thanks to Hume Smith for pointing out a problem with the ISO 8601 code
+and to Arthur David Olsen for further discussions.