Guía Técnica Completa de Unix Timestamps, UTC y Manejo de Tiempo
El Unix timestamp (tiempo POSIX o segundos Epoch) representa el tiempo como un número entero continuo de segundos transcurridos desde las 00:00:00 UTC del jueves 1 de enero de 1970. Al ser completamente independiente de husos horarios geográficos, fronteras y cambios estacionales de hora (DST), es el estándar cronológico universal en bases de datos (MySQL, PostgreSQL, MongoDB, Redis), APIs REST y tokens de autenticación (JWT).
Almacenar fechas como enteros Unix en bases de datos permite realizar búsquedas por rango extremadamente rápidas, simplifica la ordenación y evita errores de conversión horaria cuando múltiples servidores o usuarios interactúan desde distintos países.
Tiempo Universal Coordinado (UTC) vs. Hora Local
Un error frecuente consiste en creer que un timestamp contiene información del huso horario. En realidad, un timestamp Unix identifica un único instante absoluto e invariable en la línea temporal. La diferencia entre UTC y la Hora Local es simplemente un desplazamiento (offset) que se calcula al representar la fecha para el usuario:
- UTC (Tiempo Universal Coordinado): El estándar horario de referencia (GMT) sobre el cual se sincronizan todos los relojes del mundo. No sufre modificaciones por horario de verano o invierno.
- Hora Local: La fecha y hora visualizadas tras sumar o restar al estándar UTC el desfase geográfico regional (por ejemplo, UTC+1 en Madrid/París en horario de invierno, UTC+2 en verano, o UTC-5 en Nueva York en invierno).
Dado que los cambios de horario de verano se rigen por normativas territoriales que varían a lo largo del año, la conversión a hora local delega en la base de datos de zonas horarias IANA (tzdata) del sistema operativo.
Por qué el estándar POSIX no cuenta los segundos intercalares
Para mantener una formulación matemática predecible, el estándar POSIX define que cada día tiene exactamente 86.400 segundos (24 × 60 × 60). Cuando se inserta un segundo intercalar (leap second) para sincronizar la hora atómica con la rotación de la Tierra, los servidores Unix repiten el segundo 86.400 o aplican técnicas de "leap smearing" (distribuyendo la fracción de segundo a lo largo de 24 horas). Esto asegura que al restar dos marcas de tiempo y dividir por 86.400 se obtenga siempre el número exacto de días naturales transcurridos.
Ejemplo Práctico
Claim "exp" en JWT: 1772150400
UTC: Fri, 27 Feb 2026 00:00:00 GMT | ISO 8601: 2026-02-27T00:00:00Z
Los servidores de autenticación comparan el timestamp actual con el claim "exp" para validar si el token de sesión sigue activo o ha caducado.
Cache-Control max-age: 86400 | Timestamp Actual: 1772150400
Cabecera Expires: Sat, 28 Feb 2026 00:00:00 GMT (Timestamp: 1772236800)
Sumar 86.400 segundos (exactamente 24 horas) permite calcular la caducidad exacta de recursos estáticos en navegadores y servidores CDN.