如何在javascript中使用矩(moment.js)大于或等于?


79

基本上,我想做一个myMoment >= yourMoment。没有myMoment.isSameOrAfter合并将其写出来,isSame而且.isAfter有点冗长。

有什么选择?将矩转换为js日期并用于>=比较?


5
您是否尝试过if(!moment1.isBefore(moment2))?
SamHuckaby 2014年

1
@Donal-好吧,我正在Chrome中调试并注意到myMoment == yourMoment为false,但是myMoment.isSame(yourMoment)为true。
johntrepreneur 2014年

@donal JavaScript不支持运算符重载,因此像<,<=,>和> =之类的关系运算符实际上正在进行引用比较。因此,如果它“起作用”,那将是完全的意外,并且由于它比较了这些复杂对象的原始值这一事实。
John Zabroski

@JohnZabroski是不正确的,JS使用的是valueOf原型方法进行比较,因此像>,> =,<和<=这样的运算符在Moment实例上有效,因为它们将使用valueOf,即时间戳。
antoine129 '18

1
@JohnZabroski我再说一遍,对于Moment.js,它肯定是一个数字:momentjs.com/docs /#/ displaying/unix
timestamp

Answers:



56

好的,我只是使用了moment.js.diff()函数。

myMoment.diff(yourMoment) >= 0

足够近。


1
您的意思是“足够接近”?这是正确的行为。如果需要isOnOrAfter,只需向Moment原型添加一个函数。
约翰·扎布罗斯基

1
值得一提的是diff返回以毫秒为单位的差异,因此,如果您想通过说下周diff(yourMoment)> = 7来扩展此差异,您将失败。另外,不要只是在一天中增加毫秒,因为时区等会使您烦恼。
尼克·斯蒂尔

3
跟进@NickSteele的评论,您可以在第二个参数中将其用于不同的时间度量。例如:(myMoment.diff(yourMoment,'minutes')> = 15)或(myMoment.diff(yourMoment,'days')> = 7)
kiwicopple

6
let A = moment('2020-01-02');
let B = moment('2020-01-01');
let C = moment('2020-01-03');
console.log(A.diff(B, 'days'));// => 1
console.log(A.diff(C, 'days'));// => -1

支持的度量单位是年,月,周,天,小时,分钟和秒momentjs.com

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.