73

momentjsの瞬間を最も近い分にどのように切り上げ/切り捨てますか?

docsを確認しましたが、この方法はないようです。

文字列を最も近い分に丸めたくないことに注意してください。moment返された(またはその場で変更された、どちらでもかまいません)。文字列に変換する必要はなく、変換も元に戻す必要はありません。

ありがとう。


リクエストに応じて、ここにいくつかのコードがあります:

var now = new moment(new Date());

if (now.seconds() > 0) {
    now.add('minutes', -1);
}

now.seconds(0);

ご覧のとおり、ここでは手動で切り捨てることができましたが、かなりハッキリしているようです。これを達成するためのよりエレガントな方法の直後。

4

12 に答える 12

110

切り上げるには、1 分足してから切り捨てる必要があります。切り捨てるには、startOfメソッドを使用するだけです。

三項演算子を使用して、時間を丸める必要があるかどうかを確認することに注意してください (たとえば、ドットの 13:00:00 は丸める必要はありません)。

分単位での切り上げ/切り捨て

var m = moment('2017-02-17 12:01:01');
var roundDown = m.startOf('minute');
console.log(roundDown.toString()); // outputs Tue Feb 17 2017 12:01:00 GMT+0000

var m = moment('2017-02-17 12:01:01');
var roundUp = m.second() || m.millisecond() ? m.add(1, 'minute').startOf('minute') : m.startOf('minute');
console.log(roundUp.toString());  // outputs Tue Feb 17 2017 12:02:00 GMT+0000

最も近い時間への切り上げ/切り捨て

var m = moment('2017-02-17 12:59:59');
var roundDown = m.startOf('hour');
console.log(roundDown.toString()); // outputs Tue Feb 17 2017 12:00:00 GMT+0000

var m = moment('2017-02-17 12:59:59');
var roundUp = m.minute() || m.second() || m.millisecond() ? m.add(1, 'hour').startOf('hour') : m.startOf('hour');
console.log(roundUp.toString());  // outputs Tue Feb 17 2017 13:00:00 GMT+0000
于 2015-02-17T12:21:56.890 に答える
26

部分的な答え:

最も近い分に切り下げるには:

var m = moment();
m.startOf('minute');

ただし、切り上げに相当する ではendOf、期待される結果が得られません。

于 2013-07-17T05:15:25.733 に答える
2

この解決策は私にとってはうまくいきました。

function round_up_to_nearest_hour(date = new Date()) {
   return moment(date).add(59, 'minutes').startOf('hour').toDate();
}
于 2018-08-09T09:55:57.040 に答える
1

別の可能性:

const now = moment();
// -> Wed Sep 30 2015 11:57:20 GMT+0200 (CEST)
now.add(1, 'm').startOf('minute');
// -> Wed Sep 30 2015 11:58:00 GMT+0200 (CEST)
于 2015-09-30T09:59:02.133 に答える
0

より良い(そして簡単な)アプローチは-

moment('2021-07-22 14:56:58')
        .startOf('hour')
        .add(1, 'hour')
        // optional: .format('MMMM D, YYYY (h:mm A)')
//output: July 22, 2021 (3:00 PM)
于 2021-07-05T19:33:42.620 に答える
0

次の時間に切り上げる

簡単なアプローチは-

moment('2021-07-22 14:56:58')
        .startOf('hour')
        .add(1, 'hour')
        // optional: .format('MMMM D, YYYY (h:mm A)')
//output: July 22, 2021 (3:00 PM)
于 2021-07-05T19:35:18.360 に答える