Conversor de marca de tiempo Unix
Convierte entre marcas de tiempo Unix y fechas legibles
Referencia de unidades de tiempo
| Unidad | Segundos |
|---|---|
| 1 minuto | 60 |
| 1 hora | 3.600 |
| 1 día | 86.400 |
| 1 semana | 604.800 |
| 30 días | 2.592.000 |
| 365 días | 31.536.000 |
| Evento | Marca de tiempo |
|---|---|
| Época Unix | 0 |
| 1 mil millones (sep 2001) | 1.000.000.000 |
| 1,5 mil millones (jul 2017) | 1.500.000.000 |
| 2 mil millones (may 2033) | 2.000.000.000 |
| Y2038 (máx. 32 bits) | 2.147.483.647 |
| 3 mil millones (ene 2065) | 3.000.000.000 |
Obtener la marca de tiempo Unix actual en código
JavaScript / TypeScript
Math.floor(Date.now() / 1000) // seconds Date.now() // milliseconds
Python
import time int(time.time()) # seconds
PHP
time() // seconds microtime(true) // with microseconds
Go
time.Now().Unix() // seconds time.Now().UnixMilli() // milliseconds
Ruby
Time.now.to_i # seconds Time.now.to_f # with fractional
Java / Kotlin
System.currentTimeMillis() / 1000 // seconds Instant.now().getEpochSecond() // Java 8+
C# / .NET
DateTimeOffset.UtcNow.ToUnixTimeSeconds() DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
Rust
SystemTime::now() .duration_since(UNIX_EPOCH)?.as_secs()
Swift
Int(Date().timeIntervalSince1970) // seconds
Bash / Shell
date +%s # GNU/Linux date -j +%s # macOS
SQL (PostgreSQL)
SELECT EXTRACT(EPOCH FROM NOW()) SELECT NOW()::timestamp
SQL (MySQL)
SELECT UNIX_TIMESTAMP() SELECT FROM_UNIXTIME(1713024000)
¿Qué es el tiempo Unix?
El tiempo Unix (también llamado tiempo Epoch, tiempo POSIX o marca de tiempo Unix) es un sistema para rastrear el tiempo como un total acumulado de segundos desde la época Unix — 1 de enero de 1970, 00:00:00 UTC. Fue introducido con el sistema operativo Unix en los laboratorios Bell a finales de los años 60 y desde entonces se ha convertido en la representación de tiempo más utilizada en la informática.
La ventaja clave de las marcas de tiempo Unix es su universalidad: representan el mismo momento absoluto en el tiempo independientemente de la zona horaria o la configuración regional. Una marca de tiempo de 1713024000 siempre significa 14 de abril de 2024, 00:00:00 UTC — ya sea que la leas en Nueva York, Londres o Tokio. Esto las hace ideales para almacenar marcas de tiempo en bases de datos, sincronizar sistemas distribuidos y transmitir valores de tiempo a través de redes.
El tiempo Unix ignora deliberadamente los segundos intercalares: cada día se trata como exactamente 86.400 segundos. Esto simplifica el cálculo a costa de una deriva ocasional respecto al UTC. En la práctica, la diferencia es insignificante — menos de 30 segundos se han acumulado desde 1972 cuando se introdujeron los segundos intercalares.
La limitación más significativa del tiempo Unix fue el problema del Año 2038. Las implementaciones tempranas almacenaban marcas de tiempo como enteros con signo de 32 bits, que solo pueden representar valores hasta 2.147.483.647 — correspondiente al 19 de enero de 2038, 03:14:07 UTC. Los sistemas modernos han migrado en gran medida a enteros de 64 bits, que extienden el rango a aproximadamente 292 mil millones de años en cada dirección.
Preguntas frecuentes
¿Qué es una marca de tiempo Unix?
Una marca de tiempo Unix es el número de segundos transcurridos desde el 1 de enero de 1970, 00:00:00 UTC (la "época Unix"). Representa un punto en el tiempo como un solo entero, independiente de zonas horarias. Por ejemplo, la marca de tiempo 0 es medianoche del 1 de enero de 1970 UTC, y 1000000000 es el 9 de septiembre de 2001 a las 01:46:40 UTC.
¿Cómo sé si una marca de tiempo está en segundos o milisegundos?
Cuenta los dígitos. Un número de 10 dígitos es segundos (ej., 1713024000). Un número de 13 dígitos es milisegundos (ej., 1713024000000). Date.now() de JavaScript devuelve milisegundos, mientras que la mayoría de lenguajes del servidor (Python, PHP, Go, Ruby) devuelven segundos. Nuestro conversor detecta el formato automáticamente.
¿Qué es el problema Y2038?
Los sistemas que usan enteros con signo de 32 bits para marcas de tiempo Unix solo pueden representar tiempos hasta el 19 de enero de 2038, 03:14:07 UTC (marca de tiempo 2.147.483.647). Después de esto, el entero se desborda. Los sistemas modernos de 64 bits evitan esto completamente — una marca de tiempo de 64 bits puede representar fechas por unos 292 mil millones de años.
¿El tiempo Unix maneja los segundos intercalares?
No. El tiempo Unix trata cada día como exactamente 86.400 segundos, ignorando los segundos intercalares por completo. Cuando se inserta un segundo intercalar en UTC, el tiempo Unix efectivamente repite un segundo. La diferencia acumulada es menor a 30 segundos desde 1972 — insignificante para la mayoría de aplicaciones.
¿Por qué el tiempo Unix comienza el 1 de enero de 1970?
La fecha fue elegida durante el desarrollo del sistema operativo Unix en los laboratorios Bell a finales de los años 60. Era un número redondo (inicio de una nueva década) lo suficientemente reciente para ser útil, y un entero de 32 bits podía cubrir suficiente tiempo futuro para ser práctico.
¿Las marcas de tiempo Unix pueden ser negativas?
Sí. Las marcas de tiempo Unix negativas representan fechas antes del 1 de enero de 1970. Por ejemplo, -86400 representa el 31 de diciembre de 1969. La mayoría de lenguajes de programación y nuestro conversor admiten marcas de tiempo negativas correctamente.