Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

328
Views
JS .moment () - Obtenga la próxima fecha de renovación (mensual y anual) según la fecha efectiva y actual

Estoy tratando de obtener la próxima "fecha de renovación" de un modelo de suscripción (mes y año). Esa es mi configuración:

 var getPeriod = 'month'; // var getPeriod = 'year'; var getEffective = '2022-06-02'; var getDate = moment('2022-08-01'); if(getPeriod == 'month'){ var getDuration = moment.duration(getDate.diff(getEffective)).months(); } else if('year'){ var getDuration = moment.duration(getDate.diff(getEffective)).years(); } if(getDuration >= 0){ var getCounter = getDuration+1; } else { var getCounter = 1; } var getRenewalNext = moment(getEffective).add(getCounter, getPeriod+'s').format('YYYY-MM-DD'); console.log('getDuration:'); console.log(getDuration); console.log('getRenewalNext:'); console.log(getRenewalNext);

Intento 1: Correcto

 var getEffective = '2022-06-01'; var getDate = moment('2022-08-01'); "getDuration:" 2 "getRenewalNext:" "2022-09-01"

Intento 2: Correcto

 var getEffective = '2022-06-03'; var getDate = moment('2022-08-01'); "getDuration:" 1 "getRenewalNext:" "2022-08-03"

Intento 3: incorrecto

 var getEffective = '2022-06-02'; var getDate = moment('2022-08-01'); "getDuration:" 2 "getRenewalNext:" "2022-09-02"

Para el último intento, obtengo "2022-09-02" como los próximos datos de renovación, pero hubiera esperado que faltara 1 día más y que la "Próxima fecha de renovación" fuera "2022-08-02". ¿Por qué o me estoy perdiendo algo? ¿Como puedo resolver esto?

Ese es mi violín: https://jsfiddle.net/ja1k6owb/

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Actualizar a una versión más nueva de moment debería resolver el problema.

Estoy usando la última versión a continuación y estamos obteniendo la respuesta correcta.

Uno debería poder encontrar el cambio realizado (entre el momento 2.2.1 y 2.29.4) que soluciona el problema.

 var getPeriod = 'month'; // var getPeriod = 'year'; var getEffective = '2022-06-02'; var getDate = moment('2022-08-01'); if(getPeriod == 'month'){ var getDuration = moment.duration(getDate.diff(getEffective)).months(); } else if('year'){ var getDuration = moment.duration(getDate.diff(getEffective)).years(); } if(getDuration >= 0){ var getCounter = getDuration+1; } else { var getCounter = 1; } var getRenewalNext = moment(getEffective).add(getCounter, getPeriod+'s').format('YYYY-MM-DD'); console.log('getDuration:'); console.log(getDuration); console.log('getRenewalNext:'); console.log(getRenewalNext);
 .as-console-wrapper { max-height: 100% !important; }
 <script src="https://momentjs.com/downloads/moment.js"></script>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!