Cambiar las fechas
Como es lógico, además de leer una fecha también es posible cambiarla. Esta modificación puede hacerse a nivel de dia, mes y año.
Disponemos de tres métodos y sus correspondientes versiones para la zona horaria de referencia, UTC
- setDate() / setUTCDate() Cambia el día del mes
- setMonth() /setUTCMonth() Cambia el mes
- setFullYear() / setUTCFullYear(): cambia el año
El uso no es nada complejo, si queires cambiar el día de mes para una fecha basta con llamar al método fecha.setDate(diames) con el nuevo día del mes, un número entre 1 y 31.
Si el valor del número está fuera del rango de días para un mes determinado (como 30 de febrero) el objeto Date actuali<a adecuadametne el mes, por ejemplo, si ponemos el 31 de Abril la fecha pasaría a ser 1 de Mayo. Los rangos son rotatorios, o sea, cuando se sobrepasa el límite vuelve a comenzar a contar desde el inicio del rango. Asi si ponemos el día 32, para un rango de 1 a 31, el valor cambia al 1, si ponermos el 32 cambia al 2.
De igual manera usamos el cambio de mes sin olvidar que los meses no van de 1 a 12 sino de 0 a 11. Los números se reajustan si ponemos un número fuera de este rango, para que quede correcto (12 pasa a ser 0, 13 a 2)
Para poner el año se debe usar una cifra de 4 dígitos, como máximo el 9999.
Al aplicar cualquiera de estos métodos devuelve el valor de getTime() del objeto, el número de milisegundos desde la fecha origen (1/1/1970) a la nueva fecha
var fecha
fecha = new Date()
fecha = hoy.setDate(20)
console.log("Dia "+fecha);
Los métodos de cambio de fecha lógicamente afectan al objeto de referencia. Veamos que pasa si nos salimos del rango
var fecha
fecha = new Date("Feb, 1, 2021")
fecha = fecha.setDate(30); //¡No existe el 30 de Febrero!
console.log("Dia "+fecha); // 2 / Marzo de 2021
Al poner día 30 a febrero de 2021 nos salimos del maximo, 28, por tanto el exceso se cuenta nuevamente dentro del rango, sería el día 2. Y el mes se ajusta automáticamente.