使用max和min方法比较两个MomentJS对象时遇到了奇怪的结果。它们似乎返回错误的值。 例如,此代码今天而不是明天返回:
moment().max(moment().add(1, 'd'))
任何人都可以解释这种行为吗?
答案 0 :(得分: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
(最迟,结果可以是第二个日期)。
文档有明确的引用:
有时,服务器时钟与客户端时钟并不完全同步。这最终会显示人性化的字符串,例如“在几秒钟内”而不是“几秒钟前”。您可以使用#max()
时刻来防止这种情况
.max
函数因此是数字最小值(选择较早时刻)
答案 1 :(得分:0)
查看MomentJS 2.2.1的源代码后,这里是max()的源代码:
max: function ( other ) {
other = moment.apply( null, arguments );
return other > this ? this : other;
},
好像他们在this
之后回归other
时......很奇怪......