Cómo convertir el tiempo Epoch en una fecha legible
Convertir el tiempo Epoch en una fecha son dos pasos: decodificar el número como un instante en UTC y luego formatear ese instante en la zona horaria que necesites. Esta guía explica el modelo mental, cómo distinguir segundos de milisegundos y la decisión UTC frente a local, y te remite a la receta por lenguaje y al conversor de instantes.
Epoch a fecha son dos pasos
Convertir un timestamp Epoch en una fecha legible son siempre los mismos dos pasos: decodificar el número como un instante en UTC y luego formatear ese instante en la zona horaria en la que quieras mostrarlo. El número en sí no lleva zona horaria — es un único momento —, así que el mismo valor se muestra como una hora de reloj de pared distinta (a veces un día del calendario distinto) según la zona en la que lo formatees. La tabla siguiente muestra un timestamp representado en varias zonas; el resto de esta guía cubre la unidad, la elección de zona y el código.
| Zona horaria | Fecha y hora locales para 1700000000 |
|---|---|
| UTC (el instante canónico) | 2023-11-14 22:13:20 · ISO 2023-11-14T22:13:20Z |
| America/New_York | 2023-11-14 17:13:20 (EST) |
| Asia/Tokyo | 2023-11-15 07:13:20 (JST) |
| Australia/Sydney | 2023-11-15 09:13:20 (AEDT) |
¿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. Todo lenguaje de programación y sistema operativo lo admite de forma nativa, lo que lo convierte en el formato más fiable para almacenar e intercambiar timestamps entre sistemas.
Paso 1 — Identificar segundos o milisegundos
Antes de convertir, determina la unidad. Casi siempre se lee por la cantidad de dígitos, y equivocarse es la causa más común de una fecha errónea.
- 10 dígitos (p. ej. 1700000000) → segundos desde el epoch Unix
- 13 dígitos (p. ej. 1700000000000) → milisegundos desde el epoch Unix
- 16 dígitos → microsegundos; 19 dígitos → nanosegundos
- Ante la duda, comprueba si el año decodificado parece razonable — una fecha en 1970 o en un futuro lejano significa que se leyó mal la unidad
- El conversor de arriba detecta la unidad automáticamente
Paso 2 — Decodificar como UTC y luego elegir una zona
Un timestamp Unix se decodifica a un instante exacto. Mostrar ese instante en UTC o en una zona local es una decisión de presentación, no una propiedad del número. Elige UTC para todo lo orientado a máquinas — logs, API, almacenamiento en base de datos, comparación entre servidores — y convierte a la zona horaria IANA del usuario solo en el momento de mostrar una fecha a una persona. Identifica siempre una zona por su nombre IANA (America/New_York), nunca por un desfase a secas, para que el horario de verano se aplique por ti.
- Orientado a máquinas (logs, API, almacenamiento) → mostrar en UTC, ISO 8601 con una Z
- Orientado al usuario (fechas límite, timestamps en una UI) → convertir a la zona IANA del usuario
- Nunca almacenes una hora local sin su zona — almacena UTC más el nombre de zona IANA
La conversión en código
Todo lenguaje moderno tiene una función integrada de una línea que hace los dos pasos por ti. El patrón es siempre el mismo: pasa el valor en la unidad que espera la función y pide UTC o una zona horaria concreta. JavaScript y algunos más están abajo; la receta complementaria cubre por completo JavaScript, Python, PHP, Java, C#, Go, SQL, Excel y Google Sheets.
- JavaScript: new Date(1700000000 * 1000).toISOString() → "2023-11-14T22:13:20.000Z"
- Python: datetime.fromtimestamp(1700000000, tz=timezone.utc).isoformat()
- Shell: date -u -d @1700000000 (GNU) / date -u -r 1700000000 (BSD, macOS)
- SQL: TO_TIMESTAMP(1700000000) (Postgres), FROM_UNIXTIME(1700000000) (MySQL)
- Regla: pasa segundos donde se esperan segundos — solo el Date de JavaScript necesita el × 1000
Errores comunes al convertir el tiempo Epoch
Los errores más frecuentes al convertir 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 (un error de 1000×)
- No especificar una zona horaria y fiarse de la zona local del servidor, que varía entre entornos
- Almacenar los timestamps como cadenas en lugar de enteros, lo que rompe las comparaciones y la aritmética numéricas
- Usar la obsoleta datetime.utcfromtimestamp() en Python — pasa tz=timezone.utc a fromtimestamp() en su lugar
Artículos relacionados
FAQ
- ¿Cómo convierto el tiempo Epoch en una fecha?
- Identifica si el valor está en segundos (10 dígitos) o milisegundos (13 dígitos), y luego 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 a 1970?
- Pasaste un valor en segundos a una función que espera milisegundos, casi siempre el new Date() de JavaScript. Multiplica primero por 1000 el valor en segundos de 10 dígitos.
- ¿Debo convertir el tiempo Epoch a UTC o a hora local?
- Usa UTC para logs, API y comparaciones entre servidores, y convierte a la zona horaria local del usuario solo para mostrarla. El propio valor Epoch es neutral respecto a la zona horaria.
- ¿Cómo obtengo una fecha a partir de un timestamp Unix en JavaScript?
- new Date(seconds * 1000) devuelve un objeto Date que puedes formatear con toISOString(), toUTCString() o Intl.DateTimeFormat. La multiplicación es necesaria porque el Date de JavaScript espera milisegundos, no segundos.
- ¿Cómo obtengo una fecha a partir de un timestamp Unix en Python?
- Usa datetime.fromtimestamp(seconds, tz=timezone.utc) para un datetime UTC consciente de la zona. Omite el argumento tz para hora local, o añade .isoformat() para obtener una cadena ISO 8601.
- ¿El mismo valor Epoch da una fecha distinta en zonas horarias distintas?
- El instante es el mismo en todas partes, pero la fecha de reloj de pared que muestras depende de la zona horaria — e incluso puede caer en otro día del calendario. 1700000000 es el 14 de nov. en Nueva York, pero el 15 de nov. en Tokio.
- ¿Cómo convierto un timestamp en una fecha?
- Todo lenguaje moderno tiene una función integrada de una línea. Lo más difícil es identificar si tu timestamp está en segundos (10 dígitos) o milisegundos (13 dígitos) — acierta la unidad y la conversión en sí nunca falla.