Moment.js unix时间戳显示时间总是以分钟为单位

时间:2012-08-26 22:53:44

标签: javascript time momentjs

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

现在我正在使用:

moment.unix(d).fromNow()

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

2 个答案:

答案 0 :(得分:4)

不确定使用原生Moment方法是否可行,但您可以轻松制作自己的Moment扩展程序:

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

Fiddle

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

修改

具有固定复数的扩展(0分钟 s ,1分钟,2分钟 s ):

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

如果您喜欢长形式,也可以用“分钟”替换“min”。

Fiddle

答案 1 :(得分:2)

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

from : function (time, withoutSuffix) {

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

}

这是一个example

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