Hoe dat te doen een groter dan of gelijk aan met momenten (moment.js) in javascript?

Kortom, ik wil een myMoment >= yourMoment. Er is geen myMoment.isSameOrAfter en schrijven dat uit de combinatie van isSame en .isAfter is een beetje lang.

Wat is het alternatief? Zetten moment aan de js-date en gebruik >= te vergelijken?

  • Heb je geprobeerd een if(!moment1.isBefore(moment2)) ?
  • nou ik ben het opsporen van fouten in chrome en merken myMoment == yourMoment vals is, maar myMoment.isSame(yourMoment) is waar.
  • JavaScript ondersteunt geen operator overloading, en dus relationele operatoren zoals <, <=, > en >= eigenlijk aan het doen referentie vergelijking. Dus, als het “werkt”, het is een complete ongeval en vanwege het feit dat het vergelijken van primitieve waarden voor deze complexe objecten.
  • dat is niet waar, JS is met behulp van de valueOf prototype methode te vergelijken, zodat de operators like >, >=, < en <= zijn geldig op Moment exemplaren, omdat ze gebruik maken van de valueOf d.w.z. de tijdsregistratie.
  • Ik herhaal, het is te wijten aan het feit de het vergelijken van primitieve waarden voor deze complexe objecten. valueOf is hoe JavaScript haalt de primitieve waarde. Het is geen garantie dat deze waarde is zelfs een nummer.
  • Ik herhaal, het is gegarandeerd een Aantal in de zaak van Moment.js: momentjs.com/docs/#/displaying/unix-timestamp-milliseconds zie ook stackoverflow.com/questions/22600856/…

 

3 Replies
  1. 109

    Kunt u gebruik maken van de isSameOrAfter methode in momentjs:

    moment1.isSameOrAfter(moment2);
    • Dus veel leesbaarder dan de gk-methode!
    • Alleen beschikbaar in moment.js versie 2.10.7+
    • FYI: isSameOrBefore is ook beschikbaar
  2. 39

    Oke, ik ging gewoon met de moment.js .diff() functie.

    myMoment.diff(yourMoment) >= 0

    Dicht genoeg in de buurt.

    • Wat bedoel je met “dichtbij genoeg”? Het is precies het juiste gedrag. Als u wilt isOnOrAfter, op slechts een functie toevoegen aan het Moment prototype.
    • Het is het vermelden waard diff geeft het verschil in milliseconden, dus als je denkt over dit uitbreiden door te zeggen: volgende week is diff(yourMoment) >= 7 zal mislukken. Ook niet alleen toe te voegen milliseconden in een dag,want de tijd zones, enz. zal knoeien u op te zijn.
    • follow-up van @NickSteele ‘ s reactie, die u kunt gebruiken voor verschillende tijd-maatregelen met de tweede param. e.g: (myMoment.diff(yourMoment, ‘minuten’) >= 15) of (myMoment.diff(yourMoment, ‘dagen’) >= 7)
  3. 3
    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

    De ondersteunde metingen zijn jaren, maanden, weken, dagen, uren, minuten en seconden momentjs.com

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *