Cuando tengo una fecha precargada en mi selector de fechas y luego cambio manualmente el año, altera el resto de la fecha. Supongo que new Date() está teniendo dificultades para leer la entrada.
cadena predeterminada dentro de la entrada (no una instancia de Fecha):
2021-09-09fecha después de la conversión usando new Date()
Thu Sep 09 2021 00:00:00 GMT-0400 (Eastern Daylight Time)Todo esto es correcto hasta ahora.
Aquí ingreso manualmente el número 2 en la parte del año de la cadena de entrada html
0002-09-09fecha
Mon Feb 09 2009 00:00:00 GMT-0500 (Eastern Standard Time)Cambió del 9 de septiembre de 2021 al 9 de febrero de 2009. Claramente, el objeto de fecha tiene problemas para descifrar la parte 0002 de la cadena de fecha, pero no estoy seguro de por qué. Lo que espero que sea la fecha es el 9 de septiembre de 0002 dentro del selector de fecha (09/09/0002) para que pueda agregar los dígitos que quiero completar el año.
En términos de mi código, simplemente paso la nueva cadena de fecha al objeto de fecha onChange. El reemplazo se realiza para solucionar los problemas de la zona horaria con el día (el problema en el que el día tendrá un día de diferencia con respecto a la fecha elegida mediante el selector de fecha)
const date = new Date(string.replace(/-/g, '/').replace(/T.+/, ''))¿Por qué no dejar simplemente la string variable como está?
En lugar de usar new Date("0002/09/09") , use la new Date("0002-09-09") : funciona perfectamente bien y ofrece el resultado deseado . Por lo tanto, su método de reemplazo en la cadena es absolutamente obsoleto.
En su código actual, el año se confunde con el mes , por eso se devuelve el 9 de febrero de 2002 .