MomentJS-从现在开始制作()四舍五入
我使用以下代码来计算一个人的年龄:MomentJS-从现在开始制作()四舍五入,momentjs,Momentjs,我使用以下代码来计算一个人的年龄: var year = 1964; var month = 1; var day = 20; var age = moment(year + '-' + month + '-' + date, 'YYYY-MM-DD').fromNow(true); fromNow()的问题在于它根据小数点向上或向下舍入数字。我只想把它四舍五入。在上面的例子中,这个人的真实年龄是51岁,但返回52岁,因为他的年龄实际上是51.75岁 如果我使用diff()取而代之,它将取而代
var year = 1964;
var month = 1;
var day = 20;
var age = moment(year + '-' + month + '-' + date, 'YYYY-MM-DD').fromNow(true);
fromNow()
的问题在于它根据小数点向上或向下舍入数字。我只想把它四舍五入。在上面的例子中,这个人的真实年龄是51岁,但返回52岁,因为他的年龄实际上是51.75岁
如果我使用diff()
取而代之,它将取而代之,这是完美的。但是它没有给我51岁的漂亮文本
var age = moment().diff([year, month - 1, date], 'years');
我的问题是,有没有办法使
fromNow()
四舍五入 您可以配置自定义舍入功能:
moment.relativeTimeRounding(Math.floor)
提供的解决方案是正确的,但我想我应该补充一点解释,因为这是谷歌的第一个结果 假设我有一个场景,我希望100万30秒前的日期显示在一分钟前,而不是两分钟前:
const minuteAndAHalfAgo = new Date();
minuteAndAHalfAgo.setMinutes(minuteAndAHalfAgo.getMinutes() - 1);
minuteAndAHalfAgo.setSeconds(minuteAndAHalfAgo.getSeconds() - 30)
moment.relativeTimeRounding(Math.floor);
console.log(moment(minuteAndAHalfAgo).fromNow()); // a minute ago
relativeTimeRounding
函数将函数作为参数,在我们的例子中,它是Math.floor
,这意味着相对时间计算将向下舍入。这可以在文档中找到-您还可以指定一个relativeTimeThreshold
-将数字四舍五入的点。可能会派上用场;)