La función gmtime
divide un valor horario de bajo nivel en una estructura que contiene campos más útiles:
La estructura tm
contiene, como mínimo, los siguientes miembros:
El rango de tm_sec
permite un lapso ocasional de uno o dos segundos.
Veamos a continuación el programa gmtime.c
, que muestra la hora actual y la fecha usando la estructura tm
y gmtime
:
Al ejecutar el programa, obtendrá una buena aproximación de la hora y la fecha:
El programa llama a time
para obtener un valor de hora de bajo nivel y después llama a gmtime
para que convierta dicho valor en datos de hora y fecha útiles asignándola a la variable tm_ptr
.
Muestra dichos datos usando printf.
Si somos estrictos, no debería mostrar el valor horario tal cual porque no se garantiza que sea un tipo long
en todos los sistemas. Ejecutar el comando date
justo después de gmtime
, le permite comparar sus salidas.
sin embargo, hay un pequeño problema. Si está ejecutando este programa en una zona horaria diferente a GMT, y si los cambios de hora que se producen en verano están funcionando, verá que la hora (y posiblemente la fecha) no es correcta. Esto se debe a que gmtime
envía la hora según GMT (conocido ahora como Tiempo Universal Coordinado, UTC). Linux y UNIX lo hacen así para que todos los sistemas y programas del mundo estén sincronizados. Así parecerá que los archivos creados en el mismo momento en diferentes zonas horarias, han sido generados a la misma hora. Para ver la hora local, tiene que usar la función localtime
:
La función localtime
es idéntica a gmtime
, pero envía una estructura que contiene valores que se corresponden con la zona local y con los cambios de horario del verano. Si prueba el programa gmtime
nuevamente y usa localtime
en vez de gmtime
, debería recibir una hora y una fecha correcta.
Para convertir una estructura tm
de elementos en un valor de hora time_t
, puede usar la función mktime
:
mktime
enviará -1
si la estructura no se puede presentar como un valor time_t.
Para obtener una hora y una fecha «comprensible» (al contrario que la del ordenador) proporcionada por el programa date, puede usar las funciones asctime
y ctime
:
La función actime envía una cadena que representa la hora y la fecha proporcionada por la estructura tm timeptr. La cadena se presenta con un formato parecido al siguiente:
Sun Jun 12:34:12 20014\n
Se trata siempre de un formato fijado, con 26 caracteres de largo. La función ctime es equivalente a llamar a
asctime(localtime(timeval))
Transforma un valor horario en bruto en una hora local más comprensible.
Debe estar conectado para enviar un comentario.