Guía

Qué es un timestamp Unix y cómo se calcula

Entiende qué mide Unix time, cuál es su epoch y cómo pasar de segundos transcurridos a una fecha UTC con ejemplos exactos.

por Tools in a Tab · Publicado el · Revisado el

Respuesta breve

Un timestamp Unix representa tiempo como una cantidad respecto a un instante común: 1970-01-01 00:00:00 UTC, llamado Unix epoch. En su forma habitual cuenta segundos; muchas APIs y lenguajes usan milisegundos, por lo que la unidad debe formar parte del dato.

Línea temporal de Unix con el epoch cero, un día antes y un segundo después
Un timestamp sitúa un instante antes o después del epoch y debe indicar si usa segundos o milisegundos.

Tres ejemplos que fijan el modelo

Fecha UTC Segundos Unix Milisegundos Unix
1970-01-01 00:00:00 0 0
1970-01-01 00:00:01 1 1000
2000-01-01 00:00:00 946684800 946684800000

El timestamp no guarda palabras como «sábado», una zona horaria ni un formato visual. Guarda un punto de la línea temporal. La presentación como 01/01/2000, 1999-12-31 19:00 o 2000-01-01T00:00:00Z depende después de la zona y del formato elegidos.

Cómo se calcula

Conceptualmente, se resta el epoch a la fecha UTC y se expresa la diferencia en la unidad deseada:

timestamp en segundos = (instante UTC - epoch UTC) / 1 segundo
timestamp en ms       = (instante UTC - epoch UTC) / 1 milisegundo

Por ejemplo, un día exacto después del epoch son 24 × 60 × 60 = 86400 segundos. Un día antes es -86400. Los valores negativos no son errores por sí mismos: representan instantes anteriores a 1970.

Lo que Unix time no resuelve

  • No identifica la zona horaria que escribió una fecha local.
  • No evita las horas inexistentes o repetidas por cambios de horario.
  • No dice por sí solo si la unidad son segundos o milisegundos.
  • No demuestra que un reloj estuviera sincronizado.
  • No incorpora normalmente segundos intercalares en el recuento cotidiano.

Para convertir un valor real, elige explícitamente unidad y zona en el conversor de fecha, hora y timestamp. La definición NumericDate de JWT sigue el mismo origen y expresa segundos desde el epoch, ignorando segundos intercalares, según la RFC 7519.

Comprobación rápida

Si un valor actual tiene aproximadamente diez cifras, probablemente esté en segundos; con trece, suele estar en milisegundos. Es solo una pista: confirma el contrato del sistema antes de convertir. Multiplicar o dividir por 1000 debe cambiar la unidad, no el instante.