首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Moment.js在X天内获得我的年龄?

如何使用Moment.js在X天内获得我的年龄?
EN

Stack Overflow用户
提问于 2016-01-05 20:21:12
回答 3查看 2.5K关注 0票数 2

我目前的代码是

代码语言:javascript
复制
function ageInNDays(days) {
  return moment.duration(
    moment('1990-10-10').diff(
    moment().add(days, 'days'))
  );
}

.add(days, 'days')到今天,然后把它与过去的某个日期区分开来。然而,moment.duration并不总是准确地返回已过的日历年数。它将一年定义为365天,并返回其中多少年过去了。

编辑:我仍然在寻找我的年龄,作为一个数年。如果可能的话,可以使用类似于moment.duration()的20年、5个月和10天格式。

如果我的生日是1992年3月5日,那么我的年龄应该增加时,日历通过3月5日。我的剩余年龄,以天为单位,只有在每个月的第五天过去时才能重置。

EDIT2:我现在唯一的想法是

代码语言:javascript
复制
age = moment().add(days, 'days').year() - moment('1995-01-05').year()
if ((today's date + added days) < birthday's date)
  --age
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-05 21:11:19

来自文献资料

如果没有上下文,尝试将年数转换为日是没有意义的。使用moment#diff计算两个时刻之间的天数或年份要比使用持续时间要好得多。

因此,似乎使用比较是答案:

代码语言:javascript
复制
function ageInNDays(days) { 
    return moment().add(days, 'days').diff('1990-10-10', 'years', true); 
}

// ageInNDays(1000);
// 27.977483271480484

注意,它给出了年份的小数(借助第三个参数)。如果不希望舍入它(默认实现会这样做),您可以截断它:

代码语言:javascript
复制
function ageInNDays(days) { 
    return Math.floor(moment().add(days, 'days').diff('1990-10-10', 'years', true)) + ' years'; 
}

// ageInNDays(1000);
// 27 years
票数 1
EN

Stack Overflow用户

发布于 2016-01-05 20:27:39

如果你真的在几天内寻找年龄,你可以使用:

代码语言:javascript
复制
moment.duration(moment() - moment('1990-10-10')).asDays();

更新

您还可以使用它将天数添加到当前的年龄:

代码语言:javascript
复制
function ageInNDays(days) {
    var age = moment.duration(moment() - moment('1990-10-10'));
    return age.add(days, 'd').asDays();
}
票数 1
EN

Stack Overflow用户

发布于 2017-03-03 15:45:35

为小数差异度添加param布尔真

代码语言:javascript
复制
var currentDate = new Date();
var diff = moment(currentDate).diff('1990-10-10', 'years',true);
console.log("Year", diff);

示例

这将根据日期而定为21.23。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34620547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档