Dias corridos a partir de uma data inicial com moment.js

Tenho uma dúvida referente a biblioteca moment.js

Dado o seguinte código

let date = new Date ('2019/03/22');

for(let count = 1; count <= 12; count++) { 
let dateString = moment(date).add(count,'months').format('DD/MM/YYYY');
console.log('Resultado: ',dateString)
}

Até aqui tudo bem, mas eu queria adicionar a primeira data(22/03/2019) a quantidade de dias do mês vigente, ou seja caso o mês tenha 31 dias seria 22/03/2019 + 31 dias.
Desta forma que o código está agora o add.(count, 'months') é uma constante que sempre adiciona 30 dias.

Dei uma lida na documentação da biblioteca mas não encontrei nenhum exemplo que levasse em consideração dias corridos.

Gostaria de saber, se o problema é a minha lógica ou a impossibilidade de usar a biblioteca para esse fim.

Você sempre quer pegar a quantidade do dia corrente e adicionar no novo da data?

Tipo exemplifique o resultado?

Essa Biblioteca é poderosa com certeza tem como fazer isso só não entendi o que você quer realmente fazer!

1 curtida

Acho que a lógica é essa:

Código:

let data = moment("2019/03/22", "YYYY/MM/DD");
for(let count = 1; count <= 12; count++) { 
	const days = moment(data).endOf('month').format("DD");
	data.add(days, 'days');
    console.log(data.format('DD/MM/YYYY'));
}

Saída:

print1

seria isso?

1 curtida

Olá @Dragoon! Agradeço a resposta e me desculpe se não fui claro no primeiro post, eu tentei simplificar o problema e o código.

Sim, era exatamente isso. Eu queria pegar dinamicamente a quantidade de dias do mês e adicionar a minha data.

O objetivo deste código é de gerar datas de vencimento a partir de uma data de transação de uma compra parcelada. Então eu precisava saber a quantidade de dias do mês vigente da parcela para adicionar a quantidade de dias e chegar na próxima data de vencimento.

Pelo jeito o problema tava mais na minha lógica.

Mais uma dúvida, você sabe se o moment.js consegue considerar além dos dias corridos, os dias úteis(desconsiderando feriados e etc) ou não?
Seria usando calendar()? Acho que não né, isso é para datas relativas…

Teria que montar a lógica, para ele desconsiderar, mas, isso não é pelo momentjs é pela lógica no puro javascript. Feriados por exemplo você tem que definir por ano e montar algum lógica, pegar sábados e domingos seria pelo momentjs verificando dia após dia.

Tem que adicionar isso como se fosse regras …

Entendo, conversando com um amigo ele mencionou que se conta com feriado não são dias corridos e como você já falou teria que montar a lógica.
Então seria os businessDays or workdays. No moment.js acho que vi algo assim na documentação, no mais é ler ela e entender.

Mais uma vez, obrigado :smiley: