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 (:
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.