periode : precise range v2

detail years months days pour l

by toubia95

CSS

/* voir http://momentjs.com/docs/#/plugins/preciserange/ */

/* https://github.com/codebox/moment-precise-range/blob/master/readable-range.js */

/* http://stackoverflow.com/questions/1184334/get-number-days-in-a-specified-month-using-javascript */

/*
1 - saisir les dates
2 - mettre les dates dans l'ordre
3 - récupérer les années, mois, jours
4 - soustractions annes, mois, jours
5 - nombre de jours dans le mois précédent (28-31)
*/

JavaScript

var d = function (dd, mm, yyyy) {
    return new Date(yyyy, mm - 1, dd);
};

/* 1 - saisir les dates */
var debut = d(5, 5, 2018);
var fin = d(6, 6, 2015);
console.log("Date de debut: " + debut);
console.log("Date de fin: " + fin);
/* 2 - mettre les dates dans l'ordre */
console.log("INVERSION SI NECESSAIRE:");
if (debut > fin) {
    var tmp = debut;
    debut = fin;
    fin = tmp;
}
console.log("Date de debut: " + debut);
console.log("Date de fin: " + fin);
/* 3 - récupérer les années, mois, jours */
var djour = debut.getDate();
var dmois = debut.getMonth() + 1;
var dannee = debut.getYear() + 1900;
var fjour = fin.getDate();
var fmois = fin.getMonth() + 1;
var fannee = fin.getYear() + 1900;
console.log("jour de début: " + djour);
console.log("mois de début: " + dmois);
console.log("annee de début: " + dannee);
console.log("jour de fin: " + fjour);
console.log("mois de fin: " + fmois);
console.log("annee de fin: " + fannee);
/* 4 - soustractions annes, mois, jours */
var sjours = fjour - djour;
var smois = fmois - dmois;
var sannees = fannee - dannee;
console.log("SOUSTRACTIONS");
console.log("sjours: " + sjours + ", smois: " + smois + ", sannees: " + sannees);

if (smois < 0) { // si différence des mois < 0
    smois = 12 + smois; // on ajoute 12
    sannees--; // on enlève 1 an
}

console.log("sjours: " + sjours + ", smois: " + smois + ", sannees: " + sannees);


//Month is 1 based
function joursDansLeMois(mois, annee) {
    return new Date(annee, mois, 0).getDate();
}

//Fevrier
console.log("Nbre Jours dans le mois de 2/2009: " + joursDansLeMois(2, 2009) + " jours"); //28


if (sjours < 0) { // si différence des jours < 0
    // Mois de fin
    var moisavantfin = joursDansLeMois(fmois - 1, fannee);
    console.log("Nbre Jours du mois précédent le mois de fin: " + moisavantfin + " jours");
    if (moisavantfin < djour) {
        sjours = moisavantfin + sjours + (djour - moisavantfin);
    } else {
        sjours = moisavantfin + sjours;
    }
    smois--; // on...