【问题标题】:Moment.js unix timestamp to display time ago always in minutesMoment.js unix 时间戳总是以分钟为单位显示时间
【发布时间】:2012-08-21 12:05:05
【问题描述】:

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

我现在正在使用:

moment.unix(d).fromNow()

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

【问题讨论】:

    标签: javascript time momentjs


    【解决方案1】:

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

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

    Fiddle

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

    编辑:

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

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

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

    Fiddle

    【讨论】:

    • 不错..但是...我如何引入未来的时间戳?这让我的分钟数为负数
    【解决方案2】:

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

    from : function (time, withoutSuffix) {
    
      return moment.duration(this.diff(time)).asMinutes();
    
    }
    

    这是example

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-11
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多