我目前的代码是
function ageInNDays(days) {
return moment.duration(
moment('1990-10-10').diff(
moment().add(days, 'days'))
);
}
我.add(days, 'days')
到今天,然后将它与过去的某个日期区分开来。但是,moment.duration
并不总是返回通过的日历年数。它将一年定义为365天,并返回这些年中已经过了多少年。
如果我的生日是1992年3月5日,那么我的年龄只会在3月5日日历过去时增加。我的剩余年龄只能在每个月的第5天过去时重置。
EDIT2:我现在唯一的想法是
age = moment().add(days, 'days').year() - moment('1995-01-05').year()
if ((today's date + added days) < birthday's date)
--age
答案 0 :(得分:1)
如果你真的在寻找几天的年龄,你可以使用:
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();
}
答案 1 :(得分:1)
如果没有上下文,尝试将年数转换为数日是没有意义的。最好使用时刻#diff来计算两个时刻之间的天数或年数,而不是使用持续时间。
所以看起来使用diff就是答案:
function ageInNDays(days) {
return moment().add(days, 'days').diff('1990-10-10', 'years', true);
}
// ageInNDays(1000);
// 27.977483271480484
请注意,为您提供分数年数(根据第三个参数)。如果您不希望它四舍五入(默认实现的确实如此),您可以截断它:
function ageInNDays(days) {
return Math.floor(moment().add(days, 'days').diff('1990-10-10', 'years', true)) + ' years';
}
// ageInNDays(1000);
// 27 years
答案 2 :(得分:0)
为小数不同添加param布尔值为true;
var currentDate = new Date();
var diff = moment(currentDate).diff('1990-10-10', 'years',true);
console.log("Year", diff);
实施例
将根据日期回答21.23