8

Moment.jsを使用していますが、UNIXタイムスタンプを現在の時刻から数分前に(常に)表示するように変換したいと思います。例)4分前、30分前、94分前など。

現在、私は以下を使用しています:

moment.unix(d).fromNow()

ただし、これは常に数分で表示されるとは限りません。たとえば、1時間前、1日前など。.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分、1分、2分):

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 に答える