El constructor Date() proporciona las siguientes salidas de ejemplo (observe las fechas por encima del año 9999)
console.log(new Date(Date.UTC(2022,0,1))); // output => 2022-01-01T00:00:00.000Z console.log(new Date(Date.UTC(4000,0,1))); // output => 4000-01-01T00:00:00.000Z console.log(new Date(Date.UTC(9999,0,1))); // output => 9999-01-01T00:00:00.000Z console.log(new Date(Date.UTC(10000,0,1))); // output => +010000-01-01T00:00:00.000Z console.log(new Date(Date.UTC(20000,0,1))); // output => +020000-01-01T00:00:00.000ZPara los años superiores a 9999, la salida es una cadena de números de 6 dígitos con el prefijo "más" .
¿Es esto correcto? Que no:
¿Qué es significativo sobre el año 9999?
¿Por qué se agrega el signo "+" si el año está por encima de 9999 mientras que no se agrega para años inferiores?
Probado con Chrome y Node y da el mismo resultado.
Aquí hay salidas de consola simples:
console.log(new Date(Date.UTC(2022,0,1))); // output => 2022-01-01T00:00:00.000Z console.log(new Date(Date.UTC(4000,0,1))); // output => 4000-01-01T00:00:00.000Z console.log(new Date(Date.UTC(9999,0,1))); // output => 9999-01-01T00:00:00.000Z console.log(new Date(Date.UTC(10000,0,1))); // output => +010000-01-01T00:00:00.000Z console.log(new Date(Date.UTC(20000,0,1))); // output => +020000-01-01T00:00:00.000Z¿Es esto correcto?
La respuesta corta es sí".
Nada que ver con el constructor Date. Las fechas son solo un desplazamiento en milisegundos de la época de ECMAScript (1970-01-01T00:00:00Z), eso es todo.
Lo que está viendo es el resultado de llamar a Date.prototype.toISOString, que crea una cadena para la fecha representada por el valor de hora de la instancia de fecha según lo especificado porECMA-262 Formato de cadena de fecha y hora .
Para años ampliados de más de 4 dígitos, el año va precedido de "+" o "-", según corresponda.