166 votes

Moment.js - comment obtenir le nombre d'années écoulées depuis une date, non arrondi à l'unité supérieure ?

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 ?

8voto

Fyodor Khruschov Points 800

Essayez ça :

 moment("02/26/1978", "MM/DD/YYYY").fromNow().split(" ")[0];

Explication :

Nous recevons une chaîne comme celle-ci : 'il y a 23 jours'. Divisez-la en tableau : ['23', 'days', 'ago'] et on prend le premier élément '23'.

3voto

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

2voto

Ankit Points 322

Si vous ne voulez utiliser aucun module pour le calcul de l'âge

var age = Math.floor((new Date() - new Date(date_of_birth)) / 1000 / 60 / 60 / 24 / 365.25)

1voto

Xdg Points 429

Lorsque vous voulez montrer les années et les jours restants :

var m = moment(d.birthday.date, "DD.MM.YYYY");
var years = moment().diff(m, 'years', false);
var days = moment().diff(m.add(years, 'years'), 'days', false);
alert(years + ' years, ' + days + ' days');

0voto

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;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X