2014-12-06 1 views
28

Grundsätzlich möchte ich eine myMoment >= yourMoment machen. Es gibt keine myMoment.isSameOrAfter und schreiben, dass aus isSame und .isAfter Kombination ist ein bisschen lang.Wie kann man mehr als oder gleich mit Momenten (moment.js) in Javascript machen?

Was ist die Alternative? Moment in js Datum umrechnen und >= zum Vergleichen verwenden?

+4

Haben Sie versucht, eine if (moment1.isBefore (moment2)!)? – SamHuckaby

+1

@Donal - Nun, ich debugge in Chrom und merke myMoment == yourMoment ist falsch, aber myMoment.isSame (yourMoment) ist wahr. – johntrepreneur

+0

@donal JavaScript unterstützt das Überladen von Operatoren nicht, und daher führen relationale Operatoren wie <, <=, > und> = einen Referenzvergleich durch. Also, wenn es "funktioniert", ist es ein vollständiger Unfall und aufgrund der Tatsache, dass es primitive Werte für diese komplexen Objekte vergleicht. –

Antwort

27

Okay, ich ging nur mit dem moment.js .diff() Funktion.

myMoment.diff(yourMoment) >= 0

Nahe genug.

+0

Was meinst du, "nahe genug"? Es ist genau das richtige Verhalten. Wenn Sie isOnOrAfter möchten, fügen Sie dem Moment-Prototyp eine Funktion hinzu. –

+0

Es ist erwähnenswert diff gibt den Unterschied in Millisekunden, also, wenn Sie darüber nachdenken, erweitern dies mit der Aussage nächste Woche ist diff (yourMoment)> = 7 Sie werden scheitern. Fügen Sie außerdem nicht einfach Millisekunden an einem Tag hinzu, da Sie durch Zeitzonen usw. gestört werden. –

47

können Sie die isSameOrAfter Methode in momentjs verwenden:

moment1.isSameOrAfter(moment2); 
+3

So viel lesbarer als die diff-Methode! – contactmatt

+2

Nur verfügbar in moment.js Version 2.10.7+ – johntrepreneur

+0

FYI: 'isSameOrBefore' ist ebenfalls verfügbar – keshavDulal

Verwandte Themen