time_t

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

El tipo de dato time_t es un tipo de dato de la biblioteca ISO-C definido para el almacenamiento de valores de tiempo del sistema. Estos valores se devuelven desde la función time() de la biblioteca estándar. Este tipo es un typedef definido en la cabecera <time.h>. ISO-C define time_t como un tipo aritmético, pero no especifica ningún rango, resolución, o codificación en particular de la misma. Tampoco especifica los significados de las operaciones aritméticas aplicadas a los valores de tiempo.

Implementación[editar]

Unix y los sistemas compatibles con POSIX, implementan time_t como un entero[1]​ (generalmente de 32 o 64 bits), que representa el número de segundos desde el inicio del tiempo Unix: la medianoche del 1 de enero de 1970 UTC (sin contar los segundos intercalares). Algunos sistemas manejan correctamente los valores negativos, mientras que otros no lo hacen. Los sistemas que utilizan un tipo time_t entero de 32 bits son susceptibles a los problemas del año 2038.[2]

Además de la función time(), ISO-C también especifica otras funciones y tipos de conversión de sistema de valores de tiempo time_t en los tiempos del calendario y viceversa.

Ejemplo[editar]

El siguiente código en C devuelve la hora actual, le da formato de cadena, y lo escribe en la salida estándar.

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

/*
 * El resultado debe ser algo así como
 * Fri 2008-08-22 15:21:59 WAST
 */

int main(void)
{
    time_t     now;
    struct tm *ts;
    char       buf[80];

    /* Obtener la hora actual */
    now = time(0);

    /* Formatear e imprimir el tiempo, "ddd yyyy-mm-dd hh:mm:ss zzz" */
    ts = localtime(&now);
    strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", ts);
    printf("%s\n", buf);

    return 0;
}

La conversión a la hora civil[editar]

Usando GNU date, un valor dado time_t se puede convertir en su equivalente en la fecha del calendario:

$ date -ud@1234567890
Mon Oct 07 23:31:30 UTC 2016

Del mismo modo, usando BSD date:

$ date -ur 1234567890
Mon Oct 07 23:31:30 UTC 2016

Véase también[editar]

Referencias[editar]

  1. The Open Group Base Specifications Issue 7 sys/types.h. Retrieved on 2009-02-13.
  2. The Year 2038 problem, Roger M. Wilcox. Retrieved on 2011-03-11.

Enlaces externos[editar]