我目前的代码是
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:我现在唯一的想法是
age = moment().add(days, 'days').year() - moment('1995-01-05').year()
if ((today's date + added days) < birthday's date)
--age发布于 2016-01-05 21:11:19
来自文献资料,
如果没有上下文,尝试将年数转换为日是没有意义的。使用moment#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发布于 2016-01-05 20:27:39
如果你真的在几天内寻找年龄,你可以使用:
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();
}发布于 2017-03-03 15:45:35
为小数差异度添加param布尔真
var currentDate = new Date();
var diff = moment(currentDate).diff('1990-10-10', 'years',true);
console.log("Year", diff);示例
这将根据日期而定为21.23。
https://stackoverflow.com/questions/34620547
复制相似问题