MomentJS max和min返回错误的值

时间:2013-10-14 07:20:42

标签: javascript momentjs

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

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

http://jsfiddle.net/cGtbY/

任何人都可以解释这种行为吗?

2 个答案:

答案 0 :(得分:2)

您误解了minmax的含义。

从测试套件(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(最迟,结果可以是第二个日期)。

文档有明确的引用:

  

有时,服务器时钟与客户端时钟并不完全同步。这最终会显示人性化的字符串,例如“在几秒钟内”而不是“几秒钟前”。您可以使用#max()

时刻来防止这种情况

.max函数因此是数字最小值(选择较早时刻)

答案 1 :(得分:0)

查看MomentJS 2.2.1的源代码后,这里是max()的源代码:

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

好像他们在this之后回归other时......很奇怪......