Unix timestamp a fecha: conversor de tiempo Unix (epoch) en segundos y milisegundos
Escribe un Unix timestamp en el campo Unix timestamp del conversor de arriba y verás, en el recuadro Timestamp result, la fecha en formato ISO 8601 en UTC, la misma fecha en la hora local de tu navegador y el mismo instante en segundos y en milisegundos. En el campo Date to timestamp puedes hacer lo contrario: elegir una fecha y una hora y obtener su tiempo Unix en Date result. El conversor detecta solo los valores de 13 dígitos como milisegundos, lo que evita el error más común con la fecha epoch: leer milisegundos como si fueran segundos.
Qué es el tiempo Unix
El tiempo Unix, también llamado tiempo epoch u hora Unix, cuenta los segundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970, la época Unix, sin contar los segundos intercalares. Es un único número sin zona horaria, por eso lo usan los logs, las bases de datos, las APIs y los tokens: 1790000000 es el mismo instante en Madrid, en Ciudad de México y en Buenos Aires.
0 1970-01-01T00:00:00Z la época Unix
1000000000 2001-09-09T01:46:40Z
1790000000 2026-09-21T14:13:20Z
2147483647 2038-01-19T03:14:07Z mayor valor de 32 bits con signo
¿Segundos o milisegundos?
Los timestamps Unix se expresan tradicionalmente en segundos, pero JavaScript, Java y muchas APIs usan milisegundos. Cuenta los dígitos: para fechas actuales, 10 dígitos son segundos y 13 son milisegundos. El conversor trata como milisegundos cualquier valor de 13 dígitos o más y muestra las dos formas en el resultado.
1790000000 10 dígitos segundos 2026-09-21T14:13:20Z
1790000000000 13 dígitos milisegundos 2026-09-21T14:13:20Z
1790000000 leído como ms 1970-01-21T17:13:20Z <- el error clásico
Una fecha en enero de 1970 casi siempre significa que un valor en segundos se trató como milisegundos. Una fecha decenas de miles de años en el futuro significa lo contrario. Si lo que pegas no es un número, el conversor muestra Invalid timestamp.
Zonas horarias: UTC y hora local
El timestamp no tiene zona horaria; solo la tiene su representación. El conversor muestra el valor ISO 8601 en UTC, terminado en Z, y el mismo instante en la hora local de tu navegador. El timestamp 1790000000 son las 16:13:20 en Madrid (horario de verano, UTC+2), las 11:13:20 en Buenos Aires, las 09:13:20 en Bogotá y las 08:13:20 en Ciudad de México. Guarda y transmite siempre UTC, y convierte a hora local solo para mostrarla.
Al pasar una fecha a timestamp, la fecha que eliges se interpreta en tu zona horaria local, porque así funciona el campo de fecha del navegador. Si en Madrid eliges el 21/09/2026 a las 16:13, obtienes 1789999980, que corresponde a las 14:13 UTC. Si te refieres a una hora UTC, resta tu diferencia horaria o construye el valor en código con una Z explícita. El resultado siempre está en segundos.
En los cambios de horario de verano, algunas horas locales son ambiguas o no existen. Los timestamps no se ven afectados, otra razón para guardarlos a ellos y no cadenas de fecha local.
Convertir timestamp a fecha en código
Math.floor(Date.now() / 1000) // JavaScript: ahora, en segundos
new Date(1790000000 * 1000).toISOString() // '2026-09-21T14:13:20.000Z'
import datetime # Python
datetime.datetime.fromtimestamp(1790000000, datetime.timezone.utc)
# 2026-09-21 14:13:20+00:00
gmdate('Y-m-d H:i:s', 1790000000); // PHP: '2026-09-21 14:13:20'
date +%s # shell: ahora
date -u -d @1790000000 # Linux: timestamp -> fecha
date -u -r 1790000000 # macOS
Presta atención a la unidad al cruzar lenguajes: Date.now() de JavaScript devuelve milisegundos y time.time() de Python devuelve segundos con decimales.
Timestamp y fecha actual en SQL
En MySQL y MariaDB, FROM_UNIXTIME() pasa de timestamp a fecha, UNIX_TIMESTAMP() hace lo contrario y, sin argumentos, devuelve el tiempo Unix actual. Ambas funciones usan la zona horaria de la sesión, así que fíjala antes de comparar resultados:
SET time_zone = '+00:00';
SELECT FROM_UNIXTIME(1790000000); -- 2026-09-21 14:13:20
SELECT FROM_UNIXTIME(1790000000, '%d/%m/%Y %H:%i'); -- 21/09/2026 14:13
SELECT UNIX_TIMESTAMP('2026-09-21 14:13:20'); -- 1790000000
-- SQLite
SELECT datetime(1790000000, 'unixepoch'); -- 2026-09-21 14:13:20
SELECT strftime('%s', '2026-09-21 14:13:20'); -- 1790000000
Para la fecha actual en SQL, MySQL usa NOW() o UTC_TIMESTAMP(), PostgreSQL now() y SQL Server GETDATE() o SYSUTCDATETIME(). En PostgreSQL, to_timestamp(1790000000) convierte un timestamp a fecha y extract(epoch from now()) da el tiempo Unix actual. En SQL Server, DATEADD(SECOND, 1790000000, '1970-01-01') devuelve la fecha en UTC.
El problema del año 2038
Los sistemas que guardan el tiempo Unix en un entero de 32 bits con signo se desbordan a las 03:14:07 UTC del 19 de enero de 2038 y saltan a diciembre de 1901. Los sistemas operativos y lenguajes modernos usan 64 bits, pero dispositivos embebidos, formatos de archivo antiguos y columnas de base de datos declaradas como enteros de 32 bits aún pueden verse afectados. Usa columnas enteras de 64 bits o tipos de fecha nativos para cualquier fecha que guardes.
Encontrarás tiempo Unix en los claims exp, iat y nbf de los JWT (en segundos), en logs y herramientas de monitorización, en cabeceras de límite de peticiones como X-RateLimit-Reset y en las fechas de modificación de los archivos. Pega cualquiera de ellos en el conversor para ver la fecha real.
Frequently asked questions
¿Cómo convierto un timestamp a fecha?
Pega el timestamp en el campo Unix timestamp. El conversor muestra la fecha en UTC (ISO 8601) y en tu hora local, y detecta si el valor está en segundos o en milisegundos.
¿Qué es la fecha epoch?
Es el número de segundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970, sin contar los segundos intercalares. Identifica un instante sin depender de la zona horaria.
¿Cómo sé si un timestamp está en segundos o en milisegundos?
Para fechas actuales, los segundos tienen 10 dígitos y los milisegundos 13. Si el resultado cae en enero de 1970, se han leído segundos como milisegundos.
¿Cómo obtengo el Unix timestamp actual?
En JavaScript con Math.floor(Date.now() / 1000), en Python con int(time.time()), en MySQL con UNIX_TIMESTAMP() y en una terminal con date +%s.
¿Un timestamp Unix tiene zona horaria?
No. Es el mismo número en todo el mundo; solo su conversión a una fecha legible depende de la zona horaria. El conversor muestra tanto la hora UTC como tu hora local.
¿Qué es el problema del año 2038?
El tiempo Unix guardado en un entero de 32 bits con signo se desborda el 19 de enero de 2038 a las 03:14:07 UTC. Los sistemas que usan 64 bits no están afectados.