Timestamp Unix Explicado: ¿Qué Es el Tiempo Epoch?
Si alguna vez has visto un número como 1749673200 y te han dicho que representa una fecha y hora, has encontrado una marca de tiempo Unix. También conocida como "tiempo epoch" o "tiempo Unix", este sistema es la columna vertebral de cómo las computadoras rastrean el tiempo. Vamos a desglosarlo.
¿Qué es una marca de tiempo Unix?
Una marca de tiempo Unix es el número de segundos que han transcurrido desde el 1 de enero de 1970, 00:00:00 UTC — un momento conocido como el "epoch de Unix". Este punto de partida se eligió algo arbitrariamente a principios de la década de 1970 cuando se estaba desarrollando el sistema operativo Unix.
Por ejemplo:
0 = 1 de enero de 1970, 00:00:00 UTC1000000000 = 9 de septiembre de 2001, 01:46:40 UTC1749673200 = 12 de junio de 2026, 01:00:00 UTC¿Por qué es útil?
Las marcas de tiempo Unix tienen varias ventajas para la computación:
Marcas de tiempo Unix en la práctica
JavaScript
``javascript
// Obtener marca de tiempo actual
Date.now() // Devuelve milisegundos
Math.floor(Date.now() / 1000) // Devuelve segundos
// Convertir marca de tiempo a fecha
new Date(1749673200 * 1000)
`
Python
`python
import time
time.time() # Marca de tiempo actual (segundos)
time.gmtime(1749673200) # Convertir a struct_time
`
Bases de datos
La mayoría de las bases de datos almacenan marcas de tiempo internamente como tiempo Unix o representaciones similares:
PostgreSQL: EXTRACT(EPOCH FROM NOW())
MySQL: UNIX_TIMESTAMP()
MongoDB: Fechas almacenadas como milisegundos desde epoch
El problema del año 2038
Aquí hay un problema fascinante: muchos sistemas almacenan marcas de tiempo Unix como enteros con signo de 32 bits, que pueden representar valores hasta
2.147.483.647. Esto corresponde al 19 de enero de 2038, a las 03:14:07 UTC.
Después de ese momento, la marca de tiempo se desbordará y volverá a un número negativo, potencialmente causando que los sistemas interpreten fechas como si fueran de 1901. Esto es similar al problema Y2K pero para sistemas Unix.
La solución es sencilla: usar enteros de 64 bits, que pueden representar fechas miles de millones de años en el futuro. La mayoría de los sistemas modernos ya han hecho esta transición, pero los sistemas heredados aún pueden estar en riesgo.
Marcas de tiempo en milisegundos
Algunos sistemas usan milisegundos en lugar de segundos para mayor precisión:
Date.now() de JavaScript devuelve milisegundos
System.currentTimeMillis() de Java usa milisegundos
Multiplica una marca de tiempo en segundos por 1000 para obtener milisegundos
Marcas de tiempo curiosas
1234567890 = 13 de febrero de 2009, 23:31:30 UTC — celebrado por geeks de todo el mundo
1111111111 = 18 de marzo de 2005, 01:58:31 UTC
1500000000` = 14 de julio de 2017, 02:40:00 UTC