2014-12-06 247 views
28

基本上我想做一個myMoment >= yourMoment。沒有myMoment.isSameOrAfter,寫出結合isSame.isAfter有點冗長。如何在javascript中使用大於或等於moment(moment.js)?

有什麼選擇?將時刻轉換爲js日期並使用>=進行比較?

+4

有你,如果試過(moment1.isBefore(moment2)!)? – SamHuckaby 2014-12-06 00:42:29

+1

@Donal - 我在Chrome中調試並注意到myMoment == yourMoment爲false,但是myMoment.isSame(yourMoment)爲true。 – johntrepreneur 2014-12-06 00:57:25

+0

@donal JavaScript不支持運算符重載,所以像<, <=, >和> =等關係運算符實際上正在做參考比較。所以,如果它「有效」,這是一個完全的事故,並且由於它比較了這些複雜對象的原始值。 – 2015-08-06 01:49:55

回答

27

好吧,我剛剛去與moment.js .diff()功能。

myMoment.diff(yourMoment) >= 0

足夠關閉。

+0

你是什麼意思,「足夠接近」?這正是正確的行爲。如果你想要isOnOrAfter,只需在Moment原型中添加一個函數即可。 – 2015-08-06 01:51:04

+0

值得一提的是,差異會以毫秒爲單位返回差異,因此如果您想通過下週說比較差異(yourMoment)> = 7來考慮擴大這個差距,您將會失敗。另外,不要只在一天中增加毫秒,因爲時區等會讓你感到困惑。 – 2016-04-04 12:10:59

47

您可以使用momentjs的isSameOrAfter方法:

moment1.isSameOrAfter(moment2); 
+3

比diff方法更具可讀性! – contactmatt 2016-12-29 03:10:02

+2

只適用於moment.js版本2.10.7+ – johntrepreneur 2017-03-08 23:13:29

+0

僅供參考:'isSameOrBefore'也可用 – keshavDulal 2017-11-30 12:38:05

相關問題