MomentJS - 使fromNow()向下舍入

时间:2015-07-22 07:18:32

标签: momentjs

我使用以下代码计算一个人的年龄:

var year = 1964;
var month = 1;
var day = 20;
var age = moment(year + '-' + month + '-' + date, 'YYYY-MM-DD').fromNow(true);

fromNow()的问题在于它根据小数点向上或向下舍入数字。我希望它只能向下舍入。在上面的例子中,这个人的真实年龄是51岁,但是他的年龄实际上是51.75。

如果我使用diff()而不是它向下舍入,这是完美的。但它并没有给我漂亮的文字51 years old

var age = moment().diff([year, month - 1, date], 'years');

我的问题是,有没有办法让fromNow()向下舍入?

2 个答案:

答案 0 :(得分:0)

您可以配置自定义舍入功能:

moment.relativeTimeRounding(Math.floor)

答案 1 :(得分:0)

提供的解决方案是正确的,但我想我要添加一点解释,因为这是第一个Google搜索结果。

假设我有一种情况,我希望30年前的1m的日期显示a minute ago而不是two minutes ago

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,这意味着相对时间评估将被舍入。可以在文档https://momentjs.com/docs/#/customization/relative-time-rounding/中找到-您也可以指定relativeTimeThreshold-数字四舍五入的点。