Bon j'ai rien trouvé sans plugin jQuery alors j'ai fait maison d: je poste ici en espérant que ça serve à quelqu'un.

var maFonctionTouteBetes= function(date1,date2) {
    var text = {
        prefixAgo: "il y a",
        seconds: "moins d'une minute",
        minute: "environ une minute",
        minutes: "environ %d minutes",
        hour: "environ une heure",
        hours: "environ %d heures",
        day: "environ un jour",
        days: "environ %d jours",
        week: "environ une semaine",
        weeks: "environ %d semaines",
        month: "environ un mois",
        months: "environ %d mois",
        year: "un an",
        years: "%d ans"
    };
    var time = (date2 - date1) * -1;// Différence en ms entre les dates
    time = Math.floor(time / 1000);// Différence en sec entre les dates
    var minute = 60;// 1 minute
    var hour = minute * 60;// 1 heure
    var day = hour * 24;// 1 jour
    var week = day * 7;// 1 semaine
    var month = day * 30;// 1 mois
    var year = day * 365;// 1 année
    if(time >= year * 2)var timeToReturn = text.years.replace(/%d/i, Math.round(time / year));
    else if(time >= year) var timeToReturn = text.year;
    else if(time >= month * 2) var timeToReturn = text.months.replace(/%d/i, Math.round(time / month));
    else if(time >= month) var timeToReturn = text.month;
    else if(time >= week * 2) var timeToReturn = text.weeks.replace(/%d/i, Math.round(time / week));
    else if(time >= week) var timeToReturn = text.week;
    else if(time >= day * 2) var timeToReturn = text.days.replace(/%d/i, Math.round(time / day));
    else if(time >= day) var timeToReturn = text.day;
    else if(time >= hour * 2) var timeToReturn = text.hours.replace(/%d/i, Math.round(time / hour));
    else if(time >= hour) var timeToReturn = text.hour;
    else if(time >= minute * 2) var timeToReturn = text.minutes.replace(/%d/i, Math.round(time / minute));
    else if(time >= minute) var timeToReturn = text.minute;
    else var timeToReturn = text.seconds;
    return text.prefixAgo+' '+timeToReturn;
}

Y'a ptete plus simple mais c'est super fonctionnel (:

2 réponses


Tu as du mal faire tes recherche : http://momentjs.com/docs/#/durations/humanize/ :)

La fonction n'est pas fonctionnelle à partir du mois. Tu pars du principe qu'un mois à 30 jours alors que c'est faux, cela peut aller de 28 à 31.