NAME

     strftime - format date and time


SYNOPSIS

     #include <time.h>

     size_t strftime(char *s, size_t max, const char *format
                         const struct tm *tm));


DESCRIPTION

     The strftime() function  formats  the  broken-down  time  tm
     according  to the format specification format and places the
     result in the character array s of size max.

     Ordinary characters placed in the format string  are  copied
     to  s  without conversion.  Conversion specifiers are intro-
     duced by a `%' character, and are replaced in s as follows:

     %a   The abbreviated weekday name according to  the  current
          locale.

     %A   The full weekday name according to the current locale.

     %b   The abbreviated month name  according  to  the  current
          locale.

     %B   The full month name according to the current locale.

     %c   The preferred date  and  time  representation  for  the
          current locale.

     %d   The day of the month as a decimal number (range  01  to
          31).

     %H   The hour as a decimal  number  using  a  24-hour  clock
          (range 00 to 23).

     %I   The hour as a decimal  number  using  a  12-hour  clock
          (range 01 to 12).

     %j   The day of the year as a decimal number (range  001  to
          366).

     %m   The month as a decimal number (range 01 to 12).

     %M   The minute as a decimal number.

     %p   Either `am' or `pm' according to the given time  value,
          or the corresponding strings for the current locale.

     %S   The second as a decimal number.

     %U   The week number  of  the  current  year  as  a  decimal
          number, starting with the first Sunday as the first day
          of the first week.

     %W   The week number  of  the  current  year  as  a  decimal
          number, starting with the first Monday as the first day
          of the first week.

     %w   The day of the week as a decimal, Sunday being 0.

     %x   The  preferred  date  representation  for  the  current
          locale without the time.

     %X   The  preferred  time  representation  for  the  current
          locale without the date.

     %y   The year as a decimal number without a  century  (range
          00 to 99).

     %Y   The year as a decimal number including the century.

     %Z   The time zone or name or abbreviation.

     %%   A literal `%' character.

     The broken-down time structure tm is defined in <time.h>  as
     follows:

          struct tm
          {
                  int     tm_sec;         /* seconds */
                  int     tm_min;         /* minutes */
                  int     tm_hour;        /* hours */
                  int     tm_mday;        /* day of the month */
                  int     tm_mon;         /* month */
                  int     tm_year;        /* year */
                  int     tm_wday;        /* day of the week */
                  int     tm_yday;        /* day in the year */
                  int     tm_isdst;       /* daylight saving time */
          };

     The members of the tm structure are:

     tm_sec
          The number of seconds after the minute, normally in the
          range  0  to  59, but can be up to 61 to allow for leap
          seconds.

     tm_min
          The number of minutes after the hour, in the range 0 to
          59.

     tm_hour
          The number of hours past midnight, in the  range  0  to
          23.

     tm_mday
          The day of the month, in the range 1 to 31.

     tm_mon
          The number of months since January, in the range  0  to
          11.

     tm_year
          The number of years since 1900.

     tm_wday
          The number of days since Sunday, in the range 0 to 6.

     tm_yday
          The number of days since January 1, in the range  0  to
          365.

     tm_isdst
          A flag that indicates whether daylight saving  time  is
          in effect at the time described.  The value is positive
          if daylight saving time is in effect,  zero  if  it  is
          not, and negative if the information is not available.


RETURN VALUE

     The strftime() function returns  the  number  of  characters
     placed  in  the  array s, not including the terminating NULL
     character, provided the string,  including  the  terminating
     NULL,  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
     max if the array was too small.)

     Note that the return value 0 does not  necessarily  indicate
     an  error;  for  example, in many locales %p yields an empty
     string.


CONFORMING TO

     ANSI C, SVID 3, POSIX, BSD 4.3, ISO 9899


SEE ALSO

     date(1), time(2), ctime(3),