4

max メソッドと min メソッドを使用して 2 つの MomentJS オブジェクトを比較すると、奇妙な結果に遭遇しました。間違った値を返すようです。たとえば、次のコードは明日ではなく今日を返します。

moment().max(moment().add(1, 'd'))

http://jsfiddle.net/cGtbY/

誰でもこの動作を説明できますか?

4

2 に答える 2

2

と の意味を誤解していminますmax

テスト スイートから ( https://github.com/moment/moment/blob/develop/test/moment/min_max.js#L51 ):

    equalMoment(test, now.max(future), now,   "Now with the maximum of the future should be now");

意味を理解する方法は次のとおりです。a.max(b) <= b(遅くとも、結果は2番目の日付になる可能性があります)。

ドキュメントには明確な引用があります:

サーバーのクロックがクライアントのクロックと完全に同期していないことがあります。これにより、「数秒前」ではなく「数秒後」などの人間化された文字列が表示されます。moment#max() でそれを防ぐことができます

したがって.max、関数は数値の最小値です (以前の瞬間を選択)

于 2013-10-14T07:54:52.583 に答える
0

MomentJS 2.2.1 のソース コードを調べた後、max() のソース コードを次に示します。

max: function ( other ) {
    other = moment.apply( null, arguments );
    return other > this ? this : other;
},

彼らは後で戻ってくるようthisですother..奇妙な..

于 2013-10-14T07:30:10.837 に答える