web-dev-qa-db-ja.com

Momentjsの深夜からの分

純粋なJSでは、 this はどのようになります。

特定のmomentオブジェクトの真夜中からの分数を見つけるにはどうすればよいですか(Dateに抽出せずに)。

  • DSTを考慮する必要があります
  • 分は四捨五入する必要があります
  • 現地時間で動作する必要があります(UTCに変換しない)
29
bguiz
// Your moment
var mmt = moment();

// Your moment at midnight
var mmtMidnight = mmt.clone().startOf('day');

// Difference in minutes
var diffMinutes = mmt.diff(mmtMidnight, 'minutes');

デフォルトでは、moment#diffは数値を切り捨てて返します。浮動小数点数が必要な場合は、3番目の引数としてtrueを渡します。 2.0.0以前では、moment#diffは切り捨てられた数値ではなく、切り捨てられた数値を返していました。

違いがDSTを考慮しているかどうかを確認するテストがないため、この擬似コードを検討してください。

60
Tuan

これは私が今持っているものです:

    if (!moment.isMoment(mmt)) {
        return 0;
    }
    var hh = mmt.get('hour');
    var mm = mmt.get('minute');
    return hh*60 + mm;

さまざまなEdgeのケースを考慮するかどうかはわかりません。その場合はコメントするか、別の回答を提供してください。

3
bguiz