Moment: как узнать возраст человека

Созданный на 12 февр. 2013  ·  8Комментарии  ·  Источник: moment/moment

Привет, это скорее вопрос, чем проблема, но готово.
Я хочу использовать момент, чтобы проверить, старше ли человек 18 лет. Как лучше всего это сделать? Поскольку, если я использую функцию .fromNow (), я получу 18 лет, если у человека будет больше 17 с половиной.

Самый полезный комментарий

Для этого можно использовать что-то вроде birthday.diff(moment(), 'years') , где birthday - это момент дня рождения человека.

Все 8 Комментарий

Для этого можно использовать что-то вроде birthday.diff(moment(), 'years') , где birthday - это момент дня рождения человека.

Хорошо, это работает. Большое спасибо.

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

Math.abs(birthday.diff(moment(), 'years')) с Math.abs вы конвертируете этот результат в положительное число

Для этого можно использовать что-то вроде birthday.diff(moment(), 'years') , где birthday - это момент дня рождения человека.

это работает, но выдает предупреждение на консоли, есть идеи, почему?

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 В этом не было бы необходимости, если бы вы просто поменяли местами относительные вычисления, как это сделал

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

Он по-прежнему не работает правильно, если у человека недавно (менее месяца назад) был день рождения.

Он по-прежнему не работает правильно, если у человека недавно (менее месяца назад) был день рождения.

moment('2020-05-07').diff(moment('2002-05-06'), 'years') возвращает 18

Была ли эта страница полезной?
0 / 5 - 0 рейтинги