Cómo convertir el tiempo epoch en una fecha legible
Una guía práctica para convertir timestamps Unix en fechas legibles en los lenguajes de programación más populares, con herramientas en línea y ejemplos que tienen en cuenta la zona horaria.
¿Qué es el tiempo epoch?
El tiempo epoch (también llamado tiempo Unix o tiempo POSIX) es el número de segundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970. Es el estándar universal para representar instantes en informática. Todos los lenguajes y sistemas operativos lo admiten de forma nativa, lo que lo convierte en el formato más fiable para almacenar e intercambiar timestamps entre sistemas.
Paso 1 — Identifica el formato de tu timestamp
Antes de convertir, determina si tu timestamp está en segundos o en milisegundos:
- 10 dígitos (p. ej. 1700000000) → segundos desde el epoch Unix
- 13 dígitos (p. ej. 1700000000000) → milisegundos desde el epoch Unix
- Si tienes dudas, divide entre 1000 y comprueba si el año parece razonable
- También puedes pegar el timestamp en el conversor de arriba y lo detectará automáticamente
Convertir epoch a fecha en JavaScript
El constructor Date de JavaScript acepta milisegundos. Si tu timestamp está en segundos, multiplícalo primero por 1000.
- new Date(1700000000 * 1000).toISOString() → '2023-11-15T06:13:20.000Z'
- new Date(1700000000 * 1000).toUTCString() → 'Wed, 15 Nov 2023 06:13:20 GMT'
- new Date(1700000000 * 1000).toLocaleString('en-US', { timeZone: 'America/New_York' })
- new Date(1700000000000).getTime() → 1700000000000 (milliseconds back)
Convertir epoch a fecha en Python
El módulo datetime de Python ofrece fromtimestamp() para hora local y utcfromtimestamp() para UTC. Para un manejo explícito de zona horaria usa el parámetro timezone.utc.
- datetime.datetime.fromtimestamp(1700000000) → local timezone
- datetime.datetime.fromtimestamp(1700000000, tz=datetime.timezone.utc) → UTC (Python 3.2+)
- datetime.datetime.fromtimestamp(1700000000).strftime('%Y-%m-%d %H:%M:%S') → formatted string
- datetime.datetime.fromtimestamp(1700000000, tz=datetime.timezone.utc).isoformat() → ISO 8601
Convertir epoch a fecha en PHP
Las funciones date() y la clase DateTime de PHP admiten timestamps Unix directamente.
- date('Y-m-d H:i:s', 1700000000) → '2023-11-15 06:13:20' (server's local timezone)
- gmdate('Y-m-d H:i:s', 1700000000) → '2023-11-15 06:13:20' (always UTC)
- $dt = new DateTime(); $dt->setTimestamp(1700000000); $dt->format('c') → ISO 8601
Convertir epoch a fecha en Go
El paquete time de Go convierte timestamps Unix con time.Unix(seconds, nanoseconds).
- time.Unix(1700000000, 0) → time.Time in local timezone
- time.Unix(1700000000, 0).UTC() → force UTC
- time.Unix(1700000000, 0).Format(time.RFC3339) → '2023-11-15T06:13:20Z'
- time.Unix(1700000000, 0).Format('2006-01-02 15:04:05') → custom layout
Errores comunes al convertir tiempo epoch
Los errores más frecuentes al trabajar con timestamps Unix:
- Olvidar multiplicar los segundos por 1000 en JavaScript — new Date(1700000000) da el año 1970, no 2023
- Usar milisegundos de JavaScript directamente como segundos en un lenguaje de servidor
- No especificar una zona horaria y depender de la del servidor, que varía entre entornos
- Almacenar los timestamps como cadenas en vez de enteros, lo que rompe las comparaciones y la aritmética numéricas
Preguntas frecuentes sobre epoch a fecha
- ¿Cómo convierto tiempo epoch a una fecha?
- Identifica si el valor está en segundos (10 dígitos) o milisegundos (13 dígitos) y conviértelo con la API de fechas de tu lenguaje: new Date(seconds * 1000) en JavaScript, datetime.fromtimestamp(seconds, tz=timezone.utc) en Python, o pégalo en el conversor de arriba.
- ¿Por qué mi timestamp epoch se convierte en 1970?
- Pasaste un valor en segundos a una función que espera milisegundos, casi siempre el new Date() de JavaScript. Multiplica primero el valor en segundos de 10 dígitos por 1000.
- ¿Debo convertir el tiempo epoch a UTC o a hora local?
- Usa UTC para logs, APIs y comparaciones entre servidores, y convierte a la zona horaria local del usuario solo para mostrarlo. El valor epoch es neutral respecto a la zona horaria.