Estoy tratando de agregar hasta 5 años y cada año se agrega, lo almaceno para mostrarlo más tarde.
const myDate = moment("2021-07-28", "YYYY-MM-DD"); const valid = myDate.isValid(); const addYear1 = myDate.add(1, 'y'); const firstYear = addYear1; const addYear2 = firstYear.add(1, 'y'); const addYear3 = addYear2.add(1, 'y'); const addYear4 = addYear3.add(1, 'y'); const addYear5 = addYear4.add(1, 'y'); console.log("Year:", myDate); console.log("is Year Valid:", valid); console.log("Adding year1:", addYear1); console.log("Adding year2:", addYear2); console.log("Adding year3:", addYear3); console.log("Adding year4:", addYear4); console.log("Adding year5:", addYear5); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>La salida termina siendo 2026 para todas las salidas. Espero ser:
Year: 2021 Adding year1: 2022 Adding year2: 2023 Adding year3: 2024 Adding year4: 2025 Adding year5: 2026Prueba lo siguiente:
const addYear1 = myDate.add(1,'y').format('YYYY'); // 2022 const addYear2 = myDate.add(1, 'y').format('YYYY'); // 2023 const addYear3 = myDate.add(1, 'y').format('YYYY'); // 2024 const addYear4 = myDate.add(1, 'y').format('YYYY'); // 2025 const addYear5 = myDate.add(1, 'y').format('YYYY'); // 2026Simplemente reutilice el objeto de momento original y modifíquelo cada vez que desee usarlo.
No estoy seguro de usar moment pero usando vanilla js puedes usar esto
const date = new Date(); console.log(date.toString()) date.setFullYear(date.getFullYear() + 1) console.log(date.toString())Puede pasar cualquier cadena dentro de Date() para configurarlo manualmente.
add Muta el momento original agregando tiempo ( docs ).
Cada vez que agrega, no lo hace de forma aislada, está utilizando el mismo objeto. Todas sus const contienen referencias al mismo objeto de momento.
Para hacer una copia real del objeto de momento, necesitaría usar clone :
const firstYear = addYear1; // to const firstYear = addYear1.clone();Su resultado final podría ser algo como esto:
const addYear2 = firstYear.clone().add(1, 'y'); const addYear3 = addYear2.clone().add(1, 'y'); const addYear4 = addYear3.clone().add(1, 'y'); const addYear5 = addYear4.clone().add(1, 'y');O simplemente usando el mismo objeto base y agregando diferentes años:
const myDate = moment("2021-07-28", "YYYY-MM-DD"); const addYear2 = myDate.clone().add(2, 'y'); const addYear3 = myDate.clone().add(3, 'y'); const addYear4 = myDate.clone().add(4, 'y'); const addYear5 = myDate.clone().add(5, 'y');Consulte también este problema relacionado .