Cómo convertir marcas de tiempo de Unix en fechas legibles por humanos
Respuesta rápida
Marca de tiempo de Unix = segundos (o milisegundos) desde 1970-01-01 00:00:00 UTC. Convierta a una fecha con una nueva Fecha (marca de tiempo * 1000) en JavaScript (segundos) o una nueva Fecha (marca de tiempo) (milisegundos). Convierta una fecha con Math.floor(date.getTime()/1000). Utilice nuestro Convertidor de marcas de tiempo para hacer ambas cosas instantáneamente en su navegador.
Introducción
Una marca de tiempo Unix (también llamada hora de época o hora POSIX) es la cantidad de segundos que han transcurrido desde 1970-01-01 00:00:00 UTC (la época de Unix), excluyendo los segundos intercalares. Es la lengua franca del tiempo en informática porque es un número entero único independiente de la zona horaria y trivialmente ordenable. La mayoría de los sistemas utilizan segundos; JavaScript y muchas bases de datos utilizan milisegundos.
Paso a paso
-
Comprender segundos frente a milisegundos
La mayoría de los sistemas backend y APIs usan segundos (marcas de tiempo de 10 dígitos hasta 2286). La fecha de JavaScript y el uso instantáneo de Java son milisegundos (13 dígitos). Confirme siempre qué unidad espera un API; mezclarlas cambia la fecha en un factor de 1000 (desfase de ~31 años).
-
Convertir una marca de tiempo en una fecha legible
Pegue la marca de tiempo en el Convertidor de marcas de tiempo. Detecta segundos frente a milisegundos por longitud (10 frente a 13 dígitos) y muestra la fecha en UTC y su zona horaria local. En código: new Date(1700000000 * 1000).toISOString() devuelve '2023-11-14T22:13:20.000Z'.
-
Convertir una fecha en una marca de tiempo
Ingrese una fecha y hora en el convertidor; devuelve la marca de tiempo de Unix. En código: Math.floor(new Date('2026-08-28T12:00:00Z').getTime() / 1000) devuelve los segundos de la época. Especifique siempre la zona horaria (Z o un desplazamiento) para evitar ambigüedades en la hora local.
-
Manejar las zonas horarias correctamente
Las marcas de tiempo de Unix son siempre UTC y no tienen zona horaria. Convierta a una visualización local solo en la capa de presentación. Nunca almacene la hora local como una marca de tiempo; almacenar UTC y convertir en pantalla. Utilice los nombres de zona horaria de IANA (América/Nueva_York) con Intl.DateTimeFormat para un manejo correcto del horario de verano.
-
Calcular diferencias entre fechas.
Resta dos marcas de tiempo para obtener la diferencia en segundos (o milisegundos). Divida por 60 para los minutos, 3600 para las horas, 86400 para los días. Utilice nuestra herramienta Diferencia de fechas para rangos amigables para los humanos o la Calculadora de edad para edades basadas en la fecha de nacimiento.
Ejemplos
La era Unix
Aporte: 0 (seconds)
Producción: 1970-01-01 00:00:00UTC
Mil millones de segundos después de la época.
Aporte: 1000000000 (seconds)
Producción: 2001-09-09 01:46:40UTC
Inicio de 2026 en UTC
Aporte: 2026-01-01T00:00:00Z
Producción: 1767225600 (segundos) / 1767225600000 (milisegundos)
Diferencia entre dos fechas
Aporte: 1767225600 - 1700000000
Producción: 67225600 seconds = 778.08 days ≥2 years 31 days
Problemas comunes
- Confusión de segundos versus milisegundos: una marca de tiempo de 10 dígitos leída en milisegundos da una fecha en 1970; una marca de tiempo de 13 dígitos leída como segundos desborda el int de 32 bits. Detecte la unidad por recuento de dígitos o documéntela explícitamente en API.
- Almacenamiento de la hora local como marca de tiempo: las marcas de tiempo son UTC. Si calcula Date.now() en un navegador configurado en UTC-5 y trata el resultado como local, las transiciones de horario de verano cambiarán sus datos una hora dos veces al año.
- Desbordamiento de 32 bits el 19 de enero de 2038 a las 03:14:07 UTC (Y2038): los sistemas que utilizan una marca de tiempo de segundos de 32 bits firmada no pueden representar fechas posteriores a este punto. Utilice marcas de tiempo de 64 bits o milisegundos en sistemas nuevos.
- Los segundos intercalares se ignoran: las marcas de tiempo de Unix omiten los segundos intercalares, por lo que la diferencia entre dos marcas de tiempo no es igual al número de segundos SI que transcurrieron. La mayoría de las aplicaciones pueden ignorar esto; la astronomía de alta precisión y las finanzas no pueden.
Consejos
- Almacene y transmita siempre marcas de tiempo en UTC; convierta a hora local solo en la capa de visualización usando Intl.DateTimeFormat con una zona horaria de IANA.
- Utilice cadenas ISO 8601 (por ejemplo, 2026-08-28T12:00:00Z) para APIs legibles por humanos y marcas de tiempo para el almacenamiento: las cadenas ISO llevan su zona horaria explícitamente y no son ambiguas.
- Al comparar marcas de tiempo, utilice la misma unidad (segundos o milisegundos) en ambos lados; una falta de coincidencia de unidades es uno de los errores de fecha más comunes.
- Utilice nuestro Conversor de marcas de tiempo para verificar la integridad de las respuestas API durante la depuración; muestra tanto la hora UTC como la local para que pueda detectar errores de zona horaria de inmediato.