J'essaie de calculer l'âge d'une personne en utilisant Moment.js mais je trouve que l'outil, par ailleurs utile. à partir de maintenant La méthode arrondit les années. Par exemple, si nous sommes le 27/12/2012 et que la date de naissance de la personne est le 26/02/1978, moment("02/26/1978", "MM/DD/YYYY").fromNow()
retourne "il y a 35 ans". Comment puis-je faire en sorte que Moment.js ignore le nombre de mois, et renvoie simplement le nombre d'années (c'est-à-dire 34) depuis la date ?
Réponses
Trop de publicités?
Fyodor Khruschov
Points
800
Rickard Andersson
Points
51
Cette méthode fonctionne pour moi. Il s'agit de vérifier si la personne a eu son anniversaire cette année et de soustraire une année sinon.
// date is the moment you're calculating the age of
var now = moment().unix();
var then = date.unix();
var diff = (now - then) / (60 * 60 * 24 * 365);
var years = Math.floor(diff);
Edit : La première version ne fonctionnait pas parfaitement. La version mise à jour devrait
Ankit
Points
322
Xdg
Points
429
Dagan Bog-Computers
Points
580
Je préfère cette petite méthode.
function getAgeFromBirthday(birthday) {
if(birthday){
var totalMonths = moment().diff(birthday, 'months');
var years = parseInt(totalMonths / 12);
var months = totalMonths % 12;
if(months !== 0){
return parseFloat(years + '.' + months);
}
return years;
}
return null;
}