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

NOMBRE

       strptime  - convierte una cadena de caracteres que representa un tiempo
       a una estructura tm

SINOPSIS

       #define _XOPEN_SOURCE /* requerido por glibc2 */
       #include <time.h>

       char *strptime(const char *s, const char *format, struct tm *tm);

DESCRIPCI'ON

       La funcion strptime() es la funcion inversa de strftime()  y  convierte
       la  cadena  de  caracteres  a  la  que  apunte  s  en  valores  que son
       almacenados en la estructura tm a  la  que  apunte  tm,  utilizando  el
       formato  especificado  por  format.  format es una cadena de caracteres
       que consiste en descriptores de  campos  y  caracteres  de  texto,  una
       reminiscencia  de  scanf(3).   Cada  descriptor de campo consiste en un
       caracter de porcentaje % seguido por otro caracter  que  especifica  el
       reemplazo  para  el descriptor de campo.  Todos los otros caracteres de
       la cadena format deben tener un caracter concordante en  la  cadena  de
       entrada,  salvo  los espacios en blanco que pueden concordar con cero o
       mas espacios en blanco de la cadena de entrada.  Entre dos descriptores
       de  campo  cualesquiera  debe haber siempre un espacio en blanco o bien
       otros caracteres alfanumericos.

       La funcion strptime() procesa la  cadena  de  entrada  de  izquierda  a
       derecha. Cada uno de los tres posibles elementos de entrada (espacio en
       blanco, literal o formato) se tratan uno detras de otro. Si no se puede
       hacer  coincidir  la  entrada  con  la cadena de formato, la funcion se
       detiene.  El resto de las  cadenas  de  formato  y  de  entrada  no  se
       procesa.

       Los descriptores de campo de entrada se listan a continuacion.  En caso
       de que la concordancia sea con cadenas de texto (como el nombre  de  un
       dia  de  la  semana o de un mes), la comparacion no tiene en cuenta las
       mayusculas. En caso de que la concordancia sea con numeros, se  permite
       poner ceros al principio aunque no es obligatorio.

       %%     El caracter %.

       %a o %A
              El  nombre del dia de la semana segun la localizacion actual, en
              forma abreviada o completa.

       %b o %B o %h
              El nombre  del  mes  segun  la  localizacion  actual,  en  forma
              abreviada o completa.

       %c     La representacion de fecha y hora para la localizacion actual.

       %C     El numero de siglo (0-99).

       %d o %e
              El dia del mes (1-31).

       %D     Equivalente  a  %m/%d/%y.  (Este es el estilo americano para las
              fechas, muy confuso para los no americanos, especialmente debido
              a  que  el  formato  %d/%m/%y  es  el  que se usa ampliamente en
              Europa.  El formato del estandar ISO 8601 es %Y-%m-%d.)

       %H     La hora (0-23).

       %I     La hora en formato de 12 horas (1-12).

       %j     El numero de dia del ano (1-366).

       %m     El numero de mes (1-12).

       %M     El minuto (0-59).

       %n     Cadena arbitraria de espacios en blanco.

       %p     El equivalente de AM o PM en la localizacion.  (Nota:  puede  no
              existir.)

       %r     La hora en formato de 12 horas (usando el equivalente de AM o PM
              en la  localizacion).   En  la  localizacion  POSIX  equivale  a
              %I:%M:%S  %p.  Si el campo t_fmt_ampm esta vacio en la categoria
              LC_TIME  de  la  localizacion  actual   el   comportamiento   es
              indefinido.

       %R     Equivalente a %H:%M.

       %S     El  segundo  (0-60;  60 puede darse para segundos de salto (leap
              seconds); anteriormente tambien se permitia 61).

       %t     Cadena arbitraria de espacios en blanco.

       %T     Equivalente a %H:%M:%S.

       %U     El numero de semana tomando el domingo como  primer  dia  de  la
              semana  (0-53).   El primer domingo de enero es el primer dia de
              la semana 1.

       %w     El numero de dia de la semana (0-6) con domingo = 0.

       %W     El numero de semana tomando el  lunes  como  primer  dia  de  la
              semana  (0-53).  El primer lunes de enero es el primer dia de la
              semana 1.

       %x     La fecha, usando el formato de fecha de la localizacion.

       %X     La hora, usando el formato de hora de la localizacion.

       %y     El ano dentro del siglo (0-99).   Cuando  no  se  especifica  el
              siglo, los valores comprendidos en el rango 69-99 se refieren al
              siglo 20 (1969-1999) y los  valores  comprendidos  en  el  rango
              00-68 se refieren al siglo 21 (2000-2068).

       %Y     El ano, incluyendo el siglo (por ejemplo, 1991).

       Algunos descriptores de campo pueden ser modificados por los caracteres
       modificadores E u O para indicar el uso de un formato o  especificacion
       alternativo. Si el formato o especificacion alternativo no existe en la
       localizacion actual, se utiliza el descriptor de campo sin modificar.

       El modificador E especifica que la cadena  de  entrada  puede  contener
       versiones   alternativas   de   la   representacion  de  fecha  y  hora
       dependientes de la localizacion:

       %Ec    La  representacion  alternativa  de   fecha   y   hora   de   la
              localizacion.

       %EC    El   nombre   del   ano  base  (periodo)  en  la  representacion
              alternativa de la localizacion.

       %Ex    La representacion alternativa de fecha de la localizacion.

       %EX    La representacion alternativa de hora de la localizacion.

       %Ey    El desplazamiento desde %EC  (solo  ano)  en  la  representacion
              alternativa de la localizacion.

       %EY    La representacion alternativa completa para el ano.

       El  modificador  O especifica que la entrada numerica puede estar en un
       formato alternativo dependiente de la localizacion:

       %Od o %Oe
              El dia del mes usando los simbolos numericos alternativos de  la
              localizacion;  los  ceros  del comienzo estan permitidos pero no
              son obligatorios.

       %OH    La  hora  (foramto  24  horas)  usando  los  simbolos  numericos
              alternativos de la localizacion.

       %OI    La  hora  (foramto  12  horas)  usando  los  simbolos  numericos
              alternativos de la localizacion.

       %Om    El  mes  usando  los  simbolos  numericos  alternativos  de   la
              localizacion.

       %OM    Los  minutos  usando  los  simbolos numericos alternativos de la
              localizacion.

       %OS    Los segundos usando los simbolos numericos  alternativos  de  la
              localizacion.

       %OU    El  numero de semana del ano (tomando el domingo como primer dia
              de la semana) usando los simbolos numericos alternativos  de  la
              localizacion.

       %Ow    El  numero  del dia de la semana (domingo=0) usando los simbolos
              numericos alternativos de la localizacion.

       %OW    El numero de semana del ano (tomando el lunes como primer dia de
              la  semana)  usando  los  simbolos  numericos alternativos de la
              localizacion.

       %Oy    El ano (desplazamiento desde %C) usando los  simbolos  numericos
              alternativos de la localizacion.

       La  estructura  de  tiempo  descompuesto  tm se define en <time.h> como
       sigue:

              struct tm {
                      int     tm_sec;         /* segundos */
                      int     tm_min;         /* minutos */
                      int     tm_hour;        /* horas */
                      int     tm_mday;        /* dia del mes */
                      int     tm_mon;         /* mes */
                      int     tm_year;        /* ano */
                      int     tm_wday;        /* dia de la semana */
                      int     tm_yday;        /* dia del ano */
                      int     tm_isdst;       /* ccambio horario? */
              };

VALOR DEVUELTO

       El valor devuelto por la funcion es un puntero al  primer  caracter  no
       procesado  en esta llamada a la funcion. En el caso de que la cadena de
       entrada contenga mas caracteres  de  los  que  necesita  la  cadena  de
       formato,  el valor devuelto apunta justo despues del ultimo caracter de
       entrada consumido. En el caso de que  se  consuma  toda  la  cadena  de
       entrada, el valor devuelto apunta al byte NUL al final de la cadena. Si
       strptime() no puede hacer coincidir toda la cadena de  formato  y,  por
       tanto, se ha producido un error, la funcion devuelve NULL.

CONFORME A

       XPG4, SUSv2, POSIX 1003.1-2001.

EJEMPLO

       El siguiente ejemplo demuestra el uso de strptime() y strftime().

       #include <stdio.h>
       #include <time.h>

       int main() {
               struct tm tm;
               char buf[255];

               strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm);
               strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
               puts(buf);
               return 0;
       }

EXTENSIONES DE GNU

       Por  razones  de simetria, glibc trata de dar soporte en strptime a los
       mismos caracteres de formato que para  strftime.   (En  la  mayoria  de
       casos  se  analizan  los  campos  correspondientes, pero no se modifica
       ningun campo de la estructura tm.)  Esto conduce a

       %F     Equivalente a %Y-%m-%d, el formato de fecha de ISO 8601.

       %g     El ano correspondiente al numero de  semana  ISO,  pero  sin  el
              siglo (0-99).

       %G     El  ano  correspondiente  al numero de semana ISO. (Por ejemplo,
              1991.)

       %u     El dia de la semana como un numero decimal (1-7, donde  lunes  =
              1).

       %V     El numero de semana ISO 8601:1988 como un numero decimal (1-53).
              Si la semana (comenzando en lunes) que contiene el  1  de  enero
              tiene  cuatro o mas dias en el nuevo ano, se considera la semana
              1. En otro caso, se toma como la ultima semana del ano  anterior
              y la siguiente semana pasa a ser la semana 1.

       %z     Una especificacion estandar RFC-822/ISO 8601 de huso horario.

       %Z     El nombre del huso horario.

       De  manera similar, debido a las extensiones hechas por GNU a strftime,
       se acepta %k como sinonimo de %H, %l deberia ser aceptado como sinonimo
       de %I y %P se acepta como sinonimo de %p.  Finalmente

       %s     El  numero  de segundos desde la epoca, es decir, desde la media
              noche del 1 de enero de 1970  (1970-01-01  00:00:00  UTC).   Los
              segundos  de salto (leap seconds) no se tienen en cuenta a menos
              que se encuentre disponible el soporte para segundos de salto.

       La implementacion de libc de GNU  no  requiere  que  haya  espacios  en
       blanco entre dos descriptores de campo.

OBSERVACIONES

       En  principio,  esta  funcion  no  inicializa la estructura tm sino que
       simplemente almacena los valores especificados.  Esto quiere decir  que
       la  estructura  tm  debe  ser  inicializada  antes  de la llamada.  Los
       detalles pueden diferir ligeramente entre diferentes sistemas Unix.  La
       implementacion  de  libc  de GNU no modifica aquellos campos que no son
       especificados explicitamente, salvo los campos tm_wday  y  tm_yday  que
       son  recalculados  si  cualquiera  de  los elementos ano, mes o dia son
       alterados.

       Esta funcion esta disponible desde  la  version  4.6.8  de  libc.   Los
       ficheros  de cabecera de libc4 y libc5 en Linux definen el prototipo de
       manera incondicional; los ficheros de cabecera  de  glibc2  definen  el
       prototipo solamente cuando _XOPEN_SOURCE o _GNU_SOURCE estan definidas.

       En  versiones  de libc anteriores a la 5.4.13 los espacios en blanco (y
       las especificaciones 'n' y 't') no eran manejados, no se aceptaban  los
       modificadores de localizacion 'E' y 'O', y la especificacion 'C' era un
       sinonimo de la especificacion 'c'.

       La especificacion 'y' (ano en el siglo) es considerada  un  ano  en  el
       siglo  20 por libc4 y libc5. En la version 2.0 de glibc se considera un
       ano en el rango 1950-2049. Finalmente, en la version 2.1  de  glibc  la
       especificacion 'y' se considera un ano en el rango 1969-2068.

V'EASE TAMBI'EN

       time(2), getdate(3), scanf(3), setlocale(3), strftime(3)