Me gustaría agregar días a una fecha específica y formatear la salida. Así que tengo lo siguiente:
addDays(date){ return moment(date).add(365, 'd').format("DD/MM/YYYY"); }He probado lo anterior con lo siguiente
console.log(addDays("24/05/2021")) //this returns invalid date console.log(addDays("05/06/2021")) //returns 06/05/2022 En la primera fecha me devuelve invalid date y en la segunda esperaba que me devolviera el 05/06/2022 pero me devuelve la fecha incorrecta.
¿Qué me falta para que esto funcione? Mis fechas tienen el formato dd/mm/yyyy
Está fallando porque momentjs no puede analizar esa fecha.
Tendrás que especificar el formato de tu paso:
moment(inputDate, 'DD/MM/YYYY')MomentJS Cadena + Documentación de formato
Por favor, vea el siguiente ejemplo que será el resultado esperado:
function addDays(inputDate){ return moment(inputDate, 'DD/MM/YYYY').add(365, 'd').format("DD/MM/YYYY"); } console.log(addDays("24/05/2021")); console.log(addDays("05/06/2021")); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script> 24/05/2022 05/06/2022 Dicho esto, aún recomendaría usar moment().add(1, 'year') :
function addDays(inputDate){ return moment(inputDate, 'DD/MM/YYYY').add(1, 'year').format("DD/MM/YYYY"); } function addDays(inputDate){ return moment(inputDate, 'DD/MM/YYYY').add(1, 'year').format("DD/MM/YYYY"); } console.log(addDays("24/05/2021")); console.log(addDays("05/06/2021")); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>¿Lo hace? Si realmente desea agregar un año, entonces .add(1, 'year') , no 365 días.
Puede hacer esto de 2 maneras: usando day y el year
let addNYears = function(years = 1, date) { return moment(date, 'DD/MM/YYYY').add(years, 'year').format("DD/MM/YYYY"); } let addNDays = function(days = 1, date) { return moment(date, 'DD/MM/YYYY').add(days, 'day').format("DD/MM/YYYY"); } console.log(addNYears(1, new Date())); // +1 year // this is not the best way as each 4 years we have a leap year. console.log(addNDays(365, new Date())); // +365 days console.log(addNDays(5, new Date())); // +5 days <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>