JSFiddle - React, Tailwind, and code Playground
by gustavox
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>
Meses: <span class='meses2'></span>
<br>
Dias: <span class='dias'></span>
<br>
JavaScript
var data_1 = ('2012-07-16');
var data_2 = ('2014-04-14');
var data_3 = ('2012-07-16');
var data_4 = ('2014-04-14');
var checkin = moment(data_3, 'YYYY-MM-DD');
var checkout = moment(data_4, 'YYYY-MM-DD');
var dias = checkout.diff(checkin, 'days');
var datasplit1 = data_1.split("-");
var datasplit2 = data_2.split("-");
var meses = 0;
var difAnos = (datasplit2[2] - datasplit1[2]);
// Se os anos são iguais, meses é igual (mês final - mês inicial + 1)
if (datasplit1[0] === datasplit2[0]) {
meses = datasplit2[1] - datasplit1[1] + 1;
}
// Se os anos são diferentes, o período tem mais de 365 dias, e o mês inicial é inferior ao final ((ano final - ano inicial) * 12) + (mes final - mes inicial)
if ((datasplit1[0] != datasplit2[0]) && (dias > 365) && (datasplit1[1] < datasplit2[1]))
{
if (difAnos == 1) {
meses = ((datasplit2[0] - datasplit1[0]) * 12);
meses = meses + (parseInt(datasplit2[1])) - (parseInt(datasplit1[1])) + 1;
}
if (difAnos > 1) {
meses = (((datasplit2[0] - datasplit1[0]) * 12));
meses = meses + (parseInt(datasplit2[1])) - (parseInt(datasplit1[1])) + 1;
}
}
// Se os anos são diferentes, o período tem mais de 365 dias, e o mês inicial é superior ao inicial ((ano final - ano inicial) * 12) + (mês final)
if ((datasplit1[0] != datasplit2[0]) && (dias > 365) && (datasplit1[1] > datasplit2[1]))
// se difAnos > 1 - percisa abater os meses do início para não conflitar com difAnos * 12
{
difAnos = (datasplit2[0] - datasplit1[0]);
if (difAnos == 1) {
meses = ((datasplit2[0] - datasplit1[0]) * 12);
meses = meses + parseInt(datasplit2[1]) + 1;
}
if (difAnos > 1) {
meses = (((datasplit2[0] - datasplit1[0]) * 12) - datasplit1[1]);
meses = meses + parseInt(datasplit2[1]) + 1;
}
}
// Se os anos são diferentes, o período tem menos de 365 dias ((mês inicial - 12 + 1) + (mês final))
if ((datasplit1[0] != datasplit2[0]) && (dias < 365) && (datasplit1[1]...