Cómo usar el conversor de timestamp Unix
- Pega un timestamp Unix. El conversor reconoce si está en segundos o en milisegundos.
- Lee la fecha en UTC, en tu zona horaria local y en formato ISO 8601.
- Para convertir en sentido contrario, elige una fecha y una hora y copia el timestamp resultante.
Las conversiones se calculan en tu navegador con el reloj y la zona horaria de tu dispositivo; no se envía ni se guarda nada en ningún servidor.
¿Qué es un timestamp Unix?
Un timestamp Unix (también llamado tiempo epoch o tiempo POSIX) es el número de segundos transcurridos desde la época Unix: 1970-01-01T00:00:00Z, la medianoche UTC del 1 de enero de 1970. Las fechas anteriores a la época son números negativos.
Los timestamps son populares porque son un único número entero, independiente de las zonas horarias y del horario de verano, fácil de comparar y ordenar, y compacto de almacenar. La conversión a hora local es una cuestión de presentación que se resuelve en el último momento.
1700000000 → 2023-11-14T22:13:20Z
0 → 1970-01-01T00:00:00Z
-86400 → 1969-12-31T00:00:00Z
Segundos frente a milisegundos
Las herramientas Unix, PHP, time.time() de Python y la mayoría de las bases de datos usan segundos. Date.now() de JavaScript, System.currentTimeMillis() de Java y muchas API JSON usan milisegundos. Para fechas actuales, un valor en segundos tiene 10 dígitos y uno en milisegundos tiene 13. Confundirlos es, con diferencia, el error más común con los timestamps:
new Date(1700000000) // Tue Jan 20 1970 (¡interpretado como ms!)
new Date(1700000000 * 1000) // Tue Nov 14 2023
Los segundos intercalares se ignoran
El tiempo Unix supone que todos los días tienen exactamente 86.400 segundos. Cuando se añade un segundo intercalar a UTC, el tiempo Unix no lo cuenta, así que el timestamp no coincide con el número real de segundos SI transcurridos desde 1970. Para casi todas las aplicaciones esto es irrelevante, y mantiene sencillos los cálculos con fechas.
Errores habituales
El problema del año 2038
Los sistemas que guardan los timestamps como entero de 32 bits con signo solo pueden contar hasta 2.147.483.647, que corresponde a 2038-01-19T03:14:07Z. Un segundo después, el valor se desborda y salta a un número negativo, que representa una fecha de diciembre de 1901. Los sistemas operativos y lenguajes modernos usan tiempo de 64 bits, pero los dispositivos embebidos, los formatos de archivo antiguos y las columnas de bases de datos declaradas como enteros de 32 bits siguen en riesgo. Usa enteros de 64 bits o tipos nativos de fecha y hora para todo lo que pueda guardar fechas futuras.
La hora local que se cuela
Al analizar una cadena de fecha sin zona horaria, como 2024-03-10 02:30, se usa la zona local de la máquina, lo que puede dar timestamps distintos en servidores distintos, o una hora inválida durante un cambio de horario de verano. Incluye siempre el desfase horario o Z.
ISO 8601
Para intercambiar fechas legibles por personas, el estándar es ISO 8601 (y su perfil para internet, RFC 3339): 2023-11-14T22:13:20Z o 2023-11-14T23:13:20+01:00. Igual que los timestamps, las cadenas ISO 8601 en UTC se ordenan correctamente como texto plano.
Cómo obtener el timestamp actual en código
| Entorno | Segundos desde la época |
|---|---|
| Shell (Linux, macOS) | date +%s |
| Python | import time; int(time.time()) |
| JavaScript | Math.floor(Date.now() / 1000) |
| PHP | time() |
| MySQL | SELECT UNIX_TIMESTAMP(); |
| PostgreSQL | SELECT EXTRACT(EPOCH FROM now()); |
Para volver a convertir un timestamp en fecha desde la línea de comandos, usa date -u -d @1700000000 en Linux (GNU date) o date -u -r 1700000000 en macOS.
exp, iat y nbf como timestamps Unix en segundos. El decodificador de JWT los convierte por ti. Para identificadores ordenados en el tiempo que incluyen un timestamp en milisegundos, consulta el generador de UUID v7.Preguntas frecuentes
¿Un timestamp Unix es el mismo en todas las zonas horarias?
Sí. Cuenta los segundos desde un instante fijo en UTC, así que en un momento dado es idéntico en todas partes. Solo cambia su conversión a la hora local del reloj.
¿Cómo distingo los segundos de los milisegundos?
Cuenta los dígitos. Las fechas actuales tienen 10 dígitos en segundos y 13 en milisegundos. Una «fecha» en enero de 1970 suele indicar que un valor en segundos se ha leído como milisegundos; una fecha decenas de miles de años en el futuro indica lo contrario.
¿Qué pasará en 2038?
Solo falla el software que guarda el tiempo en un entero de 32 bits con signo. Los timestamps de 64 bits no se desbordarán en miles de millones de años.
¿Puede un timestamp Unix ser negativo?
Sí. Los valores negativos representan momentos anteriores al 1 de enero de 1970, aunque algunos sistemas y API antiguos no los aceptan.
Actualizado