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);