Good afternoon. I'm studying a little JS and found something interesting that I plan to use. But I noticed that the JS below that generates installments with the expiration dates, skips the month of February.
I can not identify where the error might be, so I can change and finally do it correctly.
Could you help me?
Code:
function correcaoDia(dia) {
if (isNaN(dia)) return false;
return dia < 10 ? "0" + dia : dia ;
}
function correcaoMes(mes) {
if (isNaN(mes)) return false;
return mes < 10 ? "0" + mes : mes ;
}
function calcularParcelas(parcelas, stringData) {
var ano = stringData.substring(6,10);
var mes = stringData.substring(3,5);
var dia = stringData.substring(0,2);
var dataInicial = new Date(ano,mes,dia);
var dataParcela = new Date();
var resultado = "";
var novoMes = 0;
var novoAno = 0;
resultado += "<ul>";
for ( var p = 0 ; p < parcelas ; p++ ) {
novoMes = ( dataInicial.getMonth() + p ) % 12;
novoMes = novoMes == 0 ? 12 : novoMes;
novoAno = dataInicial.getFullYear() + ( ( ( dataInicial.getMonth() + p ) - novoMes ) / 12 );
dataParcela.setMonth(novoMes);
dataParcela.setYear(novoAno);
resultado += "<li>";
resultado += correcaoDia(dataParcela.getDate());
resultado += "/";
resultado += correcaoMes(dataParcela.getMonth() + 1);
resultado += "/";
resultado += dataParcela.getFullYear();
resultado += "</li>";
}
resultado += "</ul>";
return resultado;
}
var parcelas = 8;
document.write(calcularParcelas( parcelas, "29/09/2016"));