Provided by: manpages-es_1.55-10_all bug

NOMBRE

       strftime - formatea fecha y hora

SINOPSIS

       #include <time.h>

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

DESCRIPCIÓN

       La  función  strftime()  formatea  el tiempo descompuesto en campos tm según la especificación de formato
       format y coloca el resultado en el vector de caracteres s de tamaño max.

       Los  caracteres  normales  de  la  cadena  de  formato  se  copian  en  s  sin  conversión  ninguna.  Los
       especificadores  de conversión se introducen con un carácter de porcentaje `%', y se reemplazan en s como
       sigue:

       %a     El nombre abreviado del día de la semana según la localización en curso.

       %A     El nombre del día de la semana, completo, según la localización en curso.

       %b     El nombre abreviado del mes según la localización en curso.

       %B     El nombre completo del mes según la localización en curso.

       %c     La representación preferida de fecha y hora para la localización en curso.

       %C     El siglo (año/100) como un entero de 2 dígidos. (SU)

       %d     El día del mes como un número en base diez (en el rango de 01 a 31).

       %D     Equivalente a %m/%d/%y. (Sip - sólo para norteamericanos.  Los norteamericanos deben darse  cuenta
              que  en  otros  países %d/%m/%y es bastante común. Esto significa que en un contexto internacional
              este formato es ambiguo y no se debería usar). (SU)

       %e     Como %d, el día del mes como un número decimal, pero un cero inicial se reemplaza por un  espacio.
              (SU)

       %E     Modificador; use formato alternativo, ver más abajo. (SU)

       %F     Equivalente a %Y-%m-%d (el formato de fecha de ISO 8601). (C99)

       %G     El  año  con  siglo  como  un  número  decimal  según  el  estándar ISO 8601.  El año de 4 dígitos
              correspondiente al número de la semana ISO (ver %V).  Éste tiene el mismo formato y valor que  %y,
              salvo  que si el número de la semana ISO pertenece al año anterior o siguiente, ese año se utiliza
              en su lugar. (TZ).

       %g     Como %G, pero sin siglo, es decir, con un año de 2 dígitos (00-99). (TZ)

       %h     Equivalente a %b. (SU)

       %H     La hora como un número en base diez en formato de 24 horas (en el rango de 00 a 23).

       %I     La hora como un número en base diez en formato de 12 horas (en el rango de 01 a 12).

       %j     El día juliano (día del año) como un número en base diez (en el rango de 001 a 366).

       %k     La hora (en un reloj de 24 horas) como un número decimal (en el rango de  0  a  23);  los  dígitos
              individuales son precedidos por un blanco. (Ver también %H). (TZ)

       %l     La  hora  (en  un  reloj  de 12 horas) como un número decimal (en el rango de 1 a 12); los dígitos
              individuales son precedidos por un blanco. (Ver  tambíen %I). (TZ).

       %m     El mes como un número en base diez (en el rango de 01 a 12).

       %M     El minuto como un número en base diez (en el rango de 00 a 59).

       %n     Un carácter de nueva línea. (SU)

       %O     Modificador; use un formato alternativo, ver más abajo. (SU)

       %p     O `AM' ("Ante Meridiem", antes del mediodía) o `PM' ("Post Meridiem",  después  del  mediodía)  de
              acuerdo  con  el  valor  del  tiempo  dado,  o  la  cadena  de caracteres correspondiente según la
              localización en curso.  El medio día se trata como `pm' y la media noche como `am'.

       %P     Como %p pero en letras minúsculas: `am' o `pm' o una cadena correspondiente para  la  localización
              actual. (GNU)

       %r     El  tiempo en notación a.m. o p.m..  En la localización POSIX esto es equivalente a `%I:%M:%S %p'.
              (SU)

       %R     El tiempo en notación de 24 horas (%H:%M). (SU) Para una versión que incluya lo segundos,  ver  %T
              más abajo.

       %s     El número de segundos desde la Época, es decir, desde 1970-01-01 00:00:00 UTC. (TZ)

       %S     El segundo como un número decimal (en el rango de 00 a 61)

       %t     Un carácter tabulador. (SU)

       %T     El tiempo en notación de 24 horas (%H:%M:%S). (SU)

       %u     El  día de la semana como un número decimal, en el rango de 1 a 7, siendo 1 el Lunes.  Ver también
              %w. (SU)

       %U     El número de la semana del año actual como un número en base decimal, en el  rango  de  00  a  53,
              empezando por el primer domingo como el primer día de la primera semana. Ver también %V y %W.

       %W     El  número  de  la  semana  del año actual como un número decimal según el estándar ISO 8601:1988,
              donde la semana 1 es la primera semana que tiene al menos 4 días del año actual y el lunes como el
              primer día de la semana. Ver también %U y %W. (SU)

       %w     El  día de la semana como un número decimal, en el rango de 0 a 6, siendo el domingo el cero.  Ver
              también %u.

       %W     El número de la semana del año actual como un número decimal, en el rango de 00  a  53,  empezando
              con el primer Lunes como el primer día de la primera semana.

       %x     La representación preferida de la fecha (sin la hora) para la localización en curso.

       %X     La representación preferida de la hora (sin la fecha) para la localización en curso.

       %y     El año como un número en base diez sin la centuria (en el rango de 00 a 99).

       %Y     El año como un número en base diez, incluyendo la centuria.

       %z     El  huso  horario  como  las  horas  de  diferencia  respecto a GMT.  Necesario para emitir fechas
              conformes a RFC822 (usando "%a, %d %b %Y %H:%M:%S %z"). (GNU)

       %Z     La zona horaria, nombre o abreviatura.

       %+     La fecha y hora en el formato de date(1). (TZ)

       %%     Un carácter de porcentaje literal, '%'.

       Algunos indicadores de conversión se pueden modificar precediéndolos  por  un  modificador  E  u  O  para
       indicar  que se debe usar un formato alternativo.  Si no existen formatos o especificaciones alternativos
       para la localización actual, el comportamiento quedará como si se usara la especificación  de  conversión
       sin modificar. (SU) `The Single Unix Specification' menciona %Ec, %EC, %Ex, %EX, %Ry, %EY, %Od, %Oe, %OH,
       %OI, %Om, %OM, %OS, %Ou, %OU, %OV, %Ow, %OW, %Oy, donde el  efecto  del  modificador  O  es  el  de  usar
       símbolos  numéricos  alternativos  (digamos,  números  romanos)  y  el del modificador E es el de usar un
       representación alternativa dependiente de la localización.

       La estructura para el tiempo descompuesto, tm, se define en <time.h>.  Véase también ctime(3).

VALOR DEVUELTO

       La función strftime() devuelve el número de caracteres puestos en el vector s, sin  incluir  el  carácter
       cero  terminador  (NUL),  suponiendo que la cadena, incluyendo el carácter cero terminador, cabe. En caso
       contrario, devuelve 0 y el contenido del vector es indefinido. (Esto es así al  menos  desde  la  versión
       4.4.4  de  libc; las versiones de libc muy antiguas, tales como la libc 4.4.1, devolvían max si el vector
       era demasiado pequeño).

       Dése cuenta que el  valor  devuelto  0  no  indica  necesariamente  un  error;  por  ejemplo,  en  muchas
       localizaciones %p da lugar a una cadena vacía.

ENTORNO

       Se usan las variables de entorno TZ y LC_TIME.

CONFORME A

       ANSI  C, SVID 3, ISO 9899.  Existen inclusiones estrictas entre el conjunto de conversiones dadas en ANSI
       C (sin marcar), aquellas dadas en `the Single Unix Specification' (marcadas como SU), aquellas  dadas  en
       el  paquete  de huso horario de Olson (marcadas TZ) y aquellas dadas en glibc (marcadas GNU), excepto que
       %+ no está soportado en glibc2. Por  otro  lado,  glibc2  tiene  varias  extensiones  más.  POSIX.1  sólo
       referencia  a  ANSI  C; POSIX.2 describe bajo date(1) varias extensiones que se podrían aplicar también a
       strftime.  La conversión %F está en C99 y POSIX 1003.1-2001.

FALLOS

       Algunas versiones con fallos de gcc se quejan sobre el uso de %c: advertencia: `%c' da sólo los 2 últimos
       dígitos  del  año  en algunas localizaciones.  Por supuesto los programadores insisten en usar %c, puesto
       que proporciona la representación de fecha y hora preferida. Pueden encontrarse  todo  tipo  de  extraños
       atajos para evitar este problema de gcc. Uno relativamente elegante es añadir una función intermedia
              size_t my_strftime(char *s, size_t max, const char *fmt, const struct tm *tm) {
                   return strftime(s, max, fmt, tm);
              }

VÉASE TAMBIÉN

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