Volver al Blog

Timestamp Unix Explicado: ¿Qué Es el Tiempo Epoch?

·6 min de lectura

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 UTC
  • 1000000000 = 9 de septiembre de 2001, 01:46:40 UTC
  • 1749673200 = 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:

  • Independiente de zona horaria. Una marca de tiempo Unix representa el mismo momento en cualquier lugar de la Tierra. No hay ambigüedad sobre a qué zona horaria se refiere.
  • Aritmética sencilla. ¿Quieres saber qué hora será en 3600 segundos? Solo suma 3600 a la marca de tiempo. ¿Necesitas la diferencia entre dos momentos? Resta las marcas de tiempo.
  • Almacenamiento compacto. Un solo número entero almacena la fecha y hora completas.
  • Compatibilidad universal. Cada lenguaje de programación y base de datos puede trabajar con marcas de tiempo Unix.
  • 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
  • Volver al Blog🔗 Compartir