NOMBRE¶
getdate() - convierte una cadena a una estructura tm
SINOPSIS¶
#define _XOPEN_SOURCE
#define _XOPEN_SOURCE_EXTENDED
#include <time.h>
struct tm *getdate (const char *string);
extern int getdate_err;
#define _GNU_SOURCE
#include <time.h>
int getdate_r (const char *string, struct tm
*res);
DESCRIPCIÓN¶
La función
getdate() convierte la cadena apuntada por
string en una estructura tm que es devuelta por la función. Esta
estructura tm puede encontrarse en almacenamiento estático, por lo que
puede ser sobreescrita por una llamada posterior.
En contraste con
strptime(3), (que tiene un argumento
format ),
getdate() usa los formatos situados en el fichero del cual se
especifica la ruta completa en la variable de entorno
DATEMSK. La
primera línea del fichero que concuerde con la cadena de entrada pasada
se utiliza para la conversión.
La correspondencia se hace sin tener en cuenta las mayúsculas. Los
espacios innecesarios, ya sea en el patrón o en la cadena que debe ser
convertida, se ignoran.
Las especificaciones de conversión que puede contener un patrón
son aquellas que proporciona
strptime(3). Se acepta una
especificación de conversión adicional:
- %Z
- Nombre de la zona horaria.
Cuando se proporciona
%Z, el valor que se devuelve se inicializa con el
valor de tiempo descompuesto correspondiente a la hora actual en la zona
horaria dada. En otro caso, se inicializa con el valor de tiempo descompuesto
correspondiente a la hora local actual.
Cuando sólo se especifica el día de la semana, el día que
se toma es el primero tras el día actual (que podría ser el
propio día actual).
Cuando sólo se especifica el mes (y no el año), el mes que se toma
es el primero tras el mes actual (que podría ser el propio mes actual).
Si no se especifica el día, se toma el primer día del mes.
Cuando no se dan ni hora, ni minutos, ni segundos, se toman la hora, minutos y
segundos actuales.
Si no se especifica la fecha, pero sabemos la hora, entonces la hora se toma
para que sea la primera tras la hora actual (que podría ser la propia
hora actual).
VALOR DEVUELTO¶
Cuando tiene éxito, esta función devuelve un puntero a una
estructura tm. En otro caso, devuelve NULL y modifica la variable
global
getdate_err. Los cambios a
errno son indefinidos. Se
definen los siguientes valores para
getdate_err:
- 1
- La variable de entorno DATEMSK es null o no está definida.
- 2
- No se ha podido abrir el fichero de plantillas para lectura.
- 3
- Fallo al obtener información del estado del fichero.
- 4
- El fichero de plantillas no es un fichero regular.
- 5
- Se ha producido un error al leer el fichero de plantillas.
- 6
- Fallo en la reserva de memoria (no hay suficiente memoria
disponible).
- 7
- No hay ninguna línea en el fichero que concuerde con la
entrada.
- 8
- Especificación inválida de entrada.
OBSERVACIONES¶
Puesto que
getdate() no es reentrante debido al uso de
getdate_err
y al buffer estático que contiene el valor devuelto, glibc proporciona
una variante segura para hilos. La funcionalidad es la misma. El resultado es
devuelto en el buffer apuntado por
res y en el caso de un error el
valor devuelto es distinto de cero con los mismos valores que los descritos
arriba para
getdate_err.
La especificación POSIX 1003.1-2001 para
strptime() contiene
especificaciones de conversión que usan el modificador
%E o
%O, mientras que tales especificaciones no se dan para
getdate(). La implementación de glibc implementa
getdate() usando
strptime() por lo que automáticamente
las mismas conversiones son soportadas por ambas.
La implementación de glibc no soporta la especificación de
conversión
%Z.
ENTORNO¶
- DATEMSK
- Fichero que contiene patrones de formato.
- TZ, LC_TIME
- Variables usadas por strptime().
ISO 9899, POSIX 1003.1-2001
VÉASE TAMBIÉN¶
localtime(3),
strftime(3),
strptime(3),
time(3)