Estaba trabajando en una aplicación de JavaScript donde configuré la "fecha de inicio" predeterminada en 1700-01-01 si el usuario solo selecciona una "fecha de finalización" y no selecciona una fecha de inicio. Elegí 1700-01-01 porque es la fecha más temprana que se puede almacenar en un servidor Microsoft SQL (o al menos el valor predeterminado). Luego almaceno este valor en el almacenamiento local y lo analizo nuevamente más tarde. Así que efectivamente ejecuto estos tres comandos en algún momento:
testDate = new Date(1700, 0, 1, 0, 0, 0, 0) testDateStr = testDate.toString() testDateReparsed = new Date(testDateStr) console.log(testDateReparsed );Sin embargo, testDateReparsed termina siendo la fecha: ¡Jue 31 de diciembre de 1699 23:59:24!
Este mismo comportamiento no ocurre con fechas posteriores a 1700-01-01, y también ocurre con fechas anteriores a 1700-01-01. Entonces, si repetí el mismo código, excepto que el año fue 2000 en lugar de 1700, testDateReparsed sería 2000-01-01 como se esperaba. Si el año fuera 1500 en lugar de 1700, testDateReparsed sería 1499-12-31 como el año 1700.
¿Cuál es la causa de esto? ¿Es esto un error conocido de JavaScript o me estoy perdiendo algo?