strftime
STRFTIME(E)         Linux Programmer's Manual         STRFTIME(E)



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 fol-
       lows:

       %a     The abbreviated weekday name according to the  cur-
              rent 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.

       %C     The century number (year/100) as a 2-digit integer.
              (SU)

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

       %D     Equivalent  to  %m/%d/%y.  (Yecch  -  for Americans
              only.  Americans should note that  in  other  coun-
              tries %d/%m/%y is rather common. This means that in
              international context this format is ambiguous  and
              should not be used.) (SU)

       %e     Like  %d, the day of the month as a decimal number,
              but a leading zero is replaced by a space. (SU)

       %E     Modifier: use alternative format, see below. (SU)

       %F     Equivalent to %Y-%m-%d (the ISO 8601 date  format).
              (C99)

       %G     The ISO 8601 year with century as a decimal number.
              The 4-digit year corresponding to the ISO week num-
              ber  (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)

       %g     Like %G, but without century, i.e., with a  2-digit
              year (00-99). (TZ)

       %h     Equivalent to %b. (SU)

       %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).

       %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)

       %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)

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

       %M     The minute as a decimal number (range 00 to 59).

       %n     A newline character. (SU)

       %O     Modifier: use alternative format, see below. (SU)

       %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'.

       %P     Like  %p but in lowercase: `am' or `pm' or a corre-
              sponding string for the current locale. (GNU)

       %r     The time in a.m. or p.m. notation.   In  the  POSIX
              locale this is equivalent to `%I:%M:%S %p'. (SU)

       %R     The  time  in  24-hour notation (%H:%M). (SU) For a
              version including the seconds, see %T below.

       %s     The number of seconds since the Epoch, i.e.,  since
              1970-01-01 00:00:00 UTC. (TZ)

       %S     The second as a decimal number (range 00 to 61).

       %t     A tab character. (SU)

       %T     The time in 24-hour notation (%H:%M:%S). (SU)

       %u     The  day  of  the  week as a decimal, range 1 to 7,
              Monday being 1.  See also %w. (SU)

       %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.

       %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)

       %w     The  day  of  the  week as a decimal, range 0 to 6,
              Sunday being 0.  See also %u.

       %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.

       %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 as hour offset from GMT.  Required to
              emit  RFC822-conformant  dates (using "%a, %d %b %Y
              %H:%M:%S %z"). (GNU)

       %Z     The time zone or name or abbreviation.

       %+     The date and time in date(e) format. (TZ)

       %%     A literal `%' character.

       Some conversion specifiers can be  modified  by  preceding
       them  by  the E or O modifier to indicate that an alterna-
       tive 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 specifi-
       cation  were used. (SU) The Single Unix Specification men-
       tions %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.

       The broken-down time structure tm is defined in  <time.h>.
       See also ctime(e).


RETURN VALUE
       The  strftime()  function returns the number of characters
       placed in the array s, 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 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.

ENVIRONMENT
       The environment variables TZ and LC_TIME are used.

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  date(e)  several  extensions  that  could
       apply  to  strftime  as well.  The %F conversion is in C99
       and POSIX 1003.1-2001.

SEE ALSO
       date(e), time(e), ctime(e), setlocale(e), sprintf(f)



GNU                         1999-03-29                STRFTIME(E)