Moment.js – 我如何得到一个约会的年数,而不是四舍五入?
我试图用Moment.js来计算一个人的年龄,但是我发现从Now方法中得到的其他方面有用的东西是四舍五入的。 例如,如果今天是2012年12月27日,并且该人的出生date是02/26/1978, moment("02/26/1978", "MM/DD/YYYY").fromNow()
35年前返回”。 我怎样才能使Moment.js忽略月数,并简单地返回自从date以来的年数(即34)?
使用时刻很简单,如下所示:
var years = moment().diff('1981-01-01', 'years'); var days = moment().diff('1981-01-01', 'days');
希望这可以帮助。
似乎有一个不同的function ,接受时间间隔使用,以及一个选项不围绕结果。 所以,像
Math.floor(moment(new Date()).diff(moment("02/26/1978","MM/DD/YYYY"),'years',true)))
我没有尝试过这一点,我不完全熟悉时刻,但似乎这应该得到你想要的(不必重置月份)。
如果你不想要分数值:
var years = moment().diff('1981-01-01', 'years',false); alert( years);
如果你想分数值:
var years = moment().diff('1981-01-01', 'years',true); alert( years);
单位可以是[秒,分钟,小时,天,星期,月,年]
我发现这两个date(提供的date和现在)将重置月份到一月份:
> moment("02/26/1978", "MM/DD/YYYY").month(0).from(moment().month(0)) "34 years ago"
这种方法简单而强大。
值是date,“DD-MM-YYYY”是date的掩码。
moment().diff(moment(value, "DD-MM-YYYY"), 'years');
尝试这个:
moment("02/26/1978", "MM/DD/YYYY").fromNow().split(" ")[0];
说明:
我们收到这样的string:“23天前”。 将其拆分为数组:['23','days','ago'],然后取第一个项目'23'。
这个方法适用于我。 这是检查人是否今年过生日,否则减去一年。
// 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);
编辑:第一个版本不完美的工作。 更新的应该
如果你不想使用任何模块进行年龄计算
var age = Math.floor((new Date() - new Date(date_of_birth)) / 1000 / 60 / 60 / 24 / 365.25)
忘记一下,写下你自己的!
getAge(date) { const dob = new Date(date) const now = new Date() const diff = now - dob return Math.floor(diff/(1000 * 60 * 60 * 24 * 365)) }
这当然不占闰年,所以忽略这个答案。