time_t y la época Unix
En un entorno POSIX, time_t representa el tiempo en segundos desde la época. El lenguaje C por sí solo no garantiza esta representación en todas las plataformas. Tampoco supongas que time_t siempre tiene 32 bits.
Mostrar un timestamp en UTC
#include <stdio.h>
#include <time.h>
int main(void) {
time_t timestamp = (time_t)1711972800;
struct tm *utc = gmtime(×tamp);
char output[32];
if (utc == NULL) return 1;
if (strftime(output, sizeof output,
"%Y-%m-%dT%H:%M:%SZ", utc) == 0) return 1;
puts(output); /* 2024-04-01T12:00:00Z */
return 0;
}Calcular una diferencia
difftime(end, start) calcula una diferencia en segundos sin suponer directamente el tipo aritmético subyacente de time_t.
time_t start = (time_t)1711972800;
time_t end = (time_t)1711981800;
double elapsed = difftime(end, start);
/* elapsed = 9000.0 */Qué comprobar
gmtimemuestra UTC;localtimeutiliza la zona horaria local.- Las funciones antiguas pueden utilizar memoria compartida. En un programa POSIX concurrente, considera
gmtime_rylocaltime_r. mktimeinterpreta una fecha local. No lo utilices como conversor UTC implícito.- Para medir el tiempo de ejecución en POSIX, utiliza
clock_gettime(CLOCK_MONOTONIC, ...).
Comprueba el tamaño y las capacidades de la biblioteca para fechas posteriores a 2038. El tipo de procesador por sí solo no determina todos los formatos tratados.
Referencias
Versión en español publicada el 26 de septiembre de 2026.