Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Moment.js在X天内计算出我的年龄?_Javascript_Date_Momentjs - Fatal编程技术网

Javascript 如何使用Moment.js在X天内计算出我的年龄?

Javascript 如何使用Moment.js在X天内计算出我的年龄?,javascript,date,momentjs,Javascript,Date,Momentjs,我现在的代码是 function ageInNDays(days) { return moment.duration( moment('1990-10-10').diff( moment().add(days, 'days')) ); } 我。将(天,'days')添加到今天,然后将其与过去的某个日期进行比较。但是,moment.duration并不总是返回经过的日历年数。它将一年定义为365天,并返回这些年中已经过去了多少天 编辑:我仍然在寻找我的年龄。可能的话,20

我现在的代码是

function ageInNDays(days) {
  return moment.duration(
    moment('1990-10-10').diff(
    moment().add(days, 'days'))
  );
}
。将(天,'days')
添加到今天,然后将其与过去的某个日期进行比较。但是,
moment.duration
并不总是返回经过的日历年数。它将一年定义为365天,并返回这些年中已经过去了多少天

编辑:我仍然在寻找我的年龄。可能的话,20年、5个月和10天的格式类似于矩.duration()的外观

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

我现在唯一的想法是

age = moment().add(days, 'days').year() - moment('1995-01-05').year()
if ((today's date + added days) < birthday's date)
  --age
age=moment().add(天,'days').year()-moment('1995-01-05').year()
如果((今天的日期+增加的天数)<生日日期)
--年龄

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

moment.duration(moment() - moment('1990-10-10')).asDays();
更新

您还可以使用此选项将天数添加到当前年龄:

function ageInNDays(days) {
    var age = moment.duration(moment() - moment('1990-10-10'));
    return age.add(days, 'd').asDays();
}

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

因此,使用似乎是答案:

function ageInNDays(days) { 
    return moment().add(days, 'days').diff('1990-10-10', 'years', true); 
}

// ageInNDays(1000);
// 27.977483271480484
注意,它给出了小数年数(根据第三个参数)。如果不希望将其四舍五入,可以将其截断(默认实现会这样做):


为小数差异添加参数布尔true

var currentDate = new Date();
var diff = moment(currentDate).diff('1990-10-10', 'years',true);
console.log("Year", diff);
范例


答案是21.23,取决于日期

对不起,不是“我的年龄是多少天”,而是“从现在起N天内我的年龄是多少”@user1778856-我已经更新了答案。你所要做的就是使用相同的基本计算,然后再加上天数…对不起,这仍然不能完全回答我的问题。我稍后会澄清
var currentDate = new Date();
var diff = moment(currentDate).diff('1990-10-10', 'years',true);
console.log("Year", diff);