gmtime

La función gmtime divide un valor horario de bajo nivel en una estructura que contiene campos más útiles:

variable_gmtimeLa estructura tm contiene, como mínimo, los siguientes miembros:

variable_gmtime_tmEl 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:

gmtime_listadoAl ejecutar el programa, obtendrá una buena aproximación de la hora y la fecha:

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

gmtime_listado1Muestra dichos datos usando printf.

gmtime_listado2Si 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:

gmtime_localtimeLa 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:

gmtime_mktimemktime 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:

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

atras

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.