Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

324
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda