El timestamp epoch explicado: tiempo Unix, tiempo POSIX y segundos desde 1970

Un timestamp epoch es una forma compacta de representar un momento como el tiempo transcurrido desde un punto de partida fijo. Esta guía explica el tiempo Unix, los timestamps POSIX, la fecha del epoch Unix y por qué los segundos desde 1970 UTC se convirtieron en el valor por defecto en el software.

¿Qué es un epoch timestamp?

Un epoch timestamp es un recuento numérico medido desde un momento de referencia fijo llamado epoch. En el uso cotidiano de los desarrolladores, epoch timestamp suele significar timestamp Unix: el número de segundos desde el 1 de enero de 1970 a las 00:00:00 UTC. Un valor de 0 es el epoch Unix exacto. Los valores positivos son posteriores a 1970; los negativos, anteriores.

Tiempo Unix vs timestamp POSIX

El tiempo Unix y el timestamp POSIX suelen usarse indistintamente en el código de aplicación. Ambos se refieren a los segundos transcurridos desde el epoch Unix, ignorando los segundos intercalares para simplificar el tiempo civil. El resultado práctico es un entero estable que funciona en sistemas operativos, lenguajes, bases de datos, APIs y archivos de log.

  • Fecha del epoch Unix: 1970-01-01 00:00:00 UTC
  • Timestamp Unix 0: el inicio exacto del epoch Unix
  • Timestamp POSIX: segundos desde el epoch Unix en sistemas compatibles con POSIX
  • Milisegundos epoch: el mismo epoch, pero contado en milisegundos
  • Microsegundos o nanosegundos epoch: mayor precisión para bases de datos y trazas

Por qué el timestamp desde 1970 se volvió estándar

El epoch Unix era práctico para los primeros sistemas Unix y se convirtió en convención a medida que las ideas de Unix se extendieron a las librerías de C, Linux, las bases de datos, los servidores web y los lenguajes de programación. Un único timestamp numérico es más fácil de ordenar, comparar, transmitir y almacenar que una cadena de fecha localizada.

Ejemplos de epoch timestamp

Unos cuantos valores conocidos facilitan recordar la definición.

  • 0 = 1970-01-01 00:00:00 UTC
  • 1 = 1970-01-01 00:00:01 UTC
  • 86400 = 1970-01-02 00:00:00 UTC
  • 1700000000 = 2023-11-14 22:13:20 UTC
  • 1767225600 = 2026-01-01 00:00:00 UTC

Preguntas frecuentes sobre epoch timestamp

¿Es el tiempo epoch lo mismo que el tiempo Unix?
En el uso común de los desarrolladores, sí. Tiempo epoch suele significar tiempo Unix: segundos transcurridos desde 1970-01-01 00:00:00 UTC.
¿Cuál es la definición de tiempo Unix?
El tiempo Unix se define como los segundos desde 1970-01-01 00:00:00 UTC, sin contar los segundos intercalares.
¿Un timestamp POSIX tiene en cuenta la zona horaria?
No. Un timestamp POSIX representa un instante. Las zonas horarias solo se aplican al formatear ese instante como fecha legible.
¿Los epoch timestamps son iguales en Windows, Linux y macOS?
El epoch Unix (1970-01-01 00:00:00 UTC) es idéntico en las plataformas y lenguajes modernos, así que el mismo instante da el mismo timestamp Unix en todas partes. Windows usa internamente su propio epoch FILETIME (1601), pero los timestamps Unix y POSIX estándar usan 1970.