8

我正在使用 Moment.js 并希望将 unix 时间戳转换为(始终)显示从当前时间开始的几分钟前。例如)4 分钟前、30 分钟前、94 分钟前等。

现在我正在使用:

moment.unix(d).fromNow()

但这并不总是以分钟为单位显示,例如)一小时前、一天前等。我尝试过使用 .asMinutes(),但我相信这只是带有 moment.duration() 的词。

4

2 回答 2

5

不确定这是否可以使用本机 Moment 方法,但您可以轻松地制作自己的 Moment 扩展:

moment.fn.minutesFromNow = function() {
    return Math.floor((+new Date() - (+this))/60000) + ' mins ago';
}
//then call:
moment.unix(d).minutesFromNow();

小提琴

minutesFromNow()请注意,在我的扩展返回一个字符串之后,其他时刻方法将无法链接。

编辑:

固定复数扩展(0 min s , 1 min, 2 min s):

moment.fn.minutesFromNow = function() {
    var r = Math.floor((+new Date() - (+this))/60000);
    return r + ' min' + ((r===1) ? '' : 's') + ' ago';
}

如果您喜欢长格式,也可以将“min”替换为“minute”。

小提琴

于 2012-08-26T23:31:53.107 回答
2

只需修改 moment.js 代码中的“find”函数,使其返回分钟:

from : function (time, withoutSuffix) {

  return moment.duration(this.diff(time)).asMinutes();

}

这是一个例子

...或者,甚至更好。只需将其添加为一个名为“fromNowInMinutes”的新函数。

于 2012-08-26T23:41:07.733 回答