Moment.jsを使用していますが、UNIXタイムスタンプを現在の時刻から数分前に(常に)表示するように変換したいと思います。例)4分前、30分前、94分前など。
現在、私は以下を使用しています:
moment.unix(d).fromNow()
ただし、これは常に数分で表示されるとは限りません。たとえば、1時間前、1日前など。.asMinutes()を使用してみましたが、これはmoment.duration()を含む単語のみだと思います。
Moment.jsを使用していますが、UNIXタイムスタンプを現在の時刻から数分前に(常に)表示するように変換したいと思います。例)4分前、30分前、94分前など。
現在、私は以下を使用しています:
moment.unix(d).fromNow()
ただし、これは常に数分で表示されるとは限りません。たとえば、1時間前、1日前など。.asMinutes()を使用してみましたが、これはmoment.duration()を含む単語のみだと思います。
これがネイティブの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」に置き換えることもできます。
moment.jsコードの「find」関数を変更するだけで、分が返されます。
from : function (time, withoutSuffix) {
return moment.duration(this.diff(time)).asMinutes();
}
これが例です。
...または、さらに良い。これを「fromNowInMinutes」という新しい関数として追加するだけです。