Segundos y milisegundos
El constructor Date espera milisegundos cuando recibe un número. Multiplica los segundos Unix por 1000.
const seconds = 1711972800;
const date = new Date(seconds * 1000);
console.log(date.toISOString());
// 2024-04-01T12:00:00.000Z
const nowMs = Date.now();
const nowSeconds = Math.floor(nowMs / 1000);Interpretar una fecha con un desfase UTC explícito
const date = new Date('2024-04-01T14:00:00+02:00');
if (Number.isNaN(date.getTime())) {
throw new Error('Fecha inválida');
}
console.log(date.getTime()); // 1711972800000Una fecha y hora sin desfase puede interpretarse en la zona horaria del navegador. Utiliza Z para UTC o un desfase como +02:00. Validar Date no basta para rechazar todas las fechas imposibles: algunas se normalizan.
Mostrar una zona horaria geográfica
const formatter = new Intl.DateTimeFormat('fr-FR', {
dateStyle: 'full',
timeStyle: 'long',
timeZone: 'Europe/Paris'
});
console.log(formatter.format(date));Precisión y valores grandes
Date representa instantes con precisión de milisegundos. Los timestamps en nanosegundos suelen superar la precisión entera de Number: léelos como cadenas y utiliza BigInt. La conversión a Date no conserva las fracciones de milisegundo.
No determines la unidad solo por el número de dígitos. Un valor corto puede representar milisegundos cercanos a 1970.
Referencias
Versión en español publicada el 26 de septiembre de 2026.