Se crea silenciosamente un objeto Invalid Date cuando new Date() recibe una cadena que no puede parsear. Las operaciones sobre él devuelven NaN o lanzan un RangeError. El constructor Date de JavaScript es permisivo con lo que acepta, pero los formatos aceptados varían entre navegadores.
Por qué ocurre
- •Pasar una cadena de fecha en formato DD/MM/YYYY, que no se parsea de forma confiable.
- •Pasar una cadena vacía o null a new Date().
- •Usar un formato específico de localización que el navegador no reconoce.
- •Recibir una fecha de entrada de usuario o API que está malformada.
Ejemplos
Código que causa el error
const d = new Date("31/12/2024"); // wrong format
console.log(d.toISOString());Error en la terminal
RangeError: Invalid time value
Cómo solucionarlo
Siempre usa el formato ISO 8601 (YYYY-MM-DD o YYYY-MM-DDTHH:mm:ssZ) para las fechas. Valida con isNaN(date.getTime()) después de la construcción. Considera usar una librería como date-fns o Temporal (etapa 3) para un parseo de fechas robusto.
Código corregido
// Use ISO 8601 format: YYYY-MM-DD
const d = new Date("2024-12-31");
console.log(d.toISOString()); // "2024-12-31T00:00:00.000Z"
// Always validate first
function parseDate(str) {
const d = new Date(str);
return isNaN(d.getTime()) ? null : d;
}Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis