Moment: cómo obtener la edad de una persona

Creado en 12 feb. 2013  ·  8Comentarios  ·  Fuente: moment/moment

Hola, esto es más una pregunta que un problema, pero aquí está.
Quiero aprovechar el momento para comprobar si una persona tiene más de 18 años. ¿Cuál es la mejor manera de hacer esto? Ya que si uso la función .fromNow () obtendré 18 años si la persona tiene más de 17 y medio.

Comentario más útil

Puede usar algo como birthday.diff(moment(), 'years') para esto, donde birthday es un momento del cumpleaños de la persona.

Todos 8 comentarios

Puede usar algo como birthday.diff(moment(), 'years') para esto, donde birthday es un momento del cumpleaños de la persona.

Ok, está funcionando. Muchas gracias.

const age = moment().diff(birthday, 'years');
const isLegal = (age >= 18);

Math.abs(birthday.diff(moment(), 'years')) con Math.abs convierte este resultado en un número positivo

Puede usar algo como birthday.diff(moment(), 'years') para esto, donde birthday es un momento del cumpleaños de la persona.

esto funciona pero da una advertencia en la consola, ¿alguna idea de por qué?

Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments: 
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: Fri Sep 27 2019 00:00:00 GMT+0100 (Western European Summer Time), _f: undefined, _strict: undefined, _locale: [object Object]
Error
    at Function.eval [as createFromInputFallback] (webpack-internal:///./node_modules/moment/moment.js:319:98)
    at configFromString (webpack-internal:///./node_modules/moment/moment.js:2384:15)
    at configFromInput (webpack-internal:///./node_modules/moment/moment.js:2610:13)
    at prepareConfig (webpack-internal:///./node_modules/moment/moment.js:2593:13)
    at createFromConfig (webpack-internal:///./node_modules/moment/moment.js:2560:44)
    at createLocalOrUTC (webpack-internal:///./node_modules/moment/moment.js:2647:16)
    at createLocal (webpack-internal:///./node_modules/moment/moment.js:2651:16)
    at hooks (webpack-internal:///./node_modules/moment/moment.js:11:29)
    at VueComponent.Singup (webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/Singup.vue?vue&type=script&lang=js&:95:63)
    at invokeWithErrorHandling (webpack-internal:///./node_modules/vue/dist/vue.runtime.esm.js:1853:26)

@josebedoya Eso no sería necesario si cambiaras los cálculos relativos como @eballeste :

moment().diff(birthdate, 'years')

Todavía no funciona correctamente si la persona ha cumplido recientemente (hace menos de un mes).

Todavía no funciona correctamente si la persona ha cumplido recientemente (hace menos de un mes).

moment('2020-05-07').diff(moment('2002-05-06'), 'years') devuelve 18

¿Fue útil esta página
0 / 5 - 0 calificaciones