Así es como simplemente calculo una edad, usando una fecha actual y una fecha de cumpleaños:
const now = moment(current) const bday = moment(birthday) const diff = now.diff(bday) const { _data } = moment.duration(diff) console.log(_data);Establecí estos valores, que deberían ser exactamente un año de diferencia...
current: 2021-11-20T23:00:00.000Z birthday: 2020-11-20T23:00:00.000Z... y que da como resultado estas fechas de momento:
Moment<2021-11-21T00:00:00+01:00> Moment<2020-11-21T00:00:00+01:00>Sorprendentemente obtengo este resultado:
{ milliseconds: 0, seconds: 0, minutes: 0, hours: 0, days: 30, months: 11, years: 0 } Pero esperaría 1 year . ¿Es esto un concepto erróneo de mí mismo?
diff da como resultado 31536000000 .
Prueba esto si quieres la diferencia en years :
const current = '2021-11-20T23:00:00.000Z'; const birthday = '2020-11-20T23:00:00.000Z'; const now = moment(current); const bday = moment(birthday); const diff = now.diff(bday, 'years'); console.log(diff); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>Tu camino resulta en:
const current = '2021-11-20T23:00:00.000Z'; const birthday = '2020-11-20T23:00:00.000Z'; const now = moment(current); const bday = moment(birthday); const diff = moment.duration(now.diff(bday)).asYears(); console.log(diff); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>