Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MomentJS-从现在开始制作()四舍五入_Momentjs - Fatal编程技术网

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
-将数字四舍五入的点。

可能会派上用场;)