4

在使用 max 和 min 方法比较两个 MomentJS 对象时,我遇到了一个奇怪的结果。它们似乎返回了错误的值。例如,此代码返回今天而不是明天:

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

http://jsfiddle.net/cGtbY/

谁能解释这种行为?

4

2 回答 2

2

min您误解了and的含义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最迟,结果可以是第二个日期)。

该文档有一个明确的报价:

有时,服务器时钟与客户端时钟并不完全同步。这最终会显示人性化的字符串,例如“几秒钟内”而不是“几秒钟前”。您可以使用 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 回答