Ich versuche mit Moment.js festzustellen, ob ein bestimmtes Datum zwischen zwei Daten liegt. Seit Version 2.0.0 hat Tim hinzugefügt isBefore()
und isAfter()
zum Datumsvergleich.
Da es keine isBetween()
Methode gibt, dachte ich, das würde funktionieren:
var date = moment("15/02/2013", "DD/MM/YYYY");
var startDate = moment("12/01/2013", "DD/MM/YYYY");
var endDate = moment("15/01/2013", "DD/MM/YYYY");
if (date.isBefore(endDate)
&& date.isAfter(startDate)
|| (date.isSame(startDate) || date.isSame(endDate))
) {
alert("Yay!");
} else {
alert("Nay! :(");
}
Ich bin überzeugt, dass es dafür einen besseren Weg geben muss. Irgendwelche Ideen?
javascript
date
momentjs
Joel A. Villarreal Bertoldi
quelle
quelle
isBetween
||
isStart || isEnd
Antworten:
Sie können eines der Moment-Plugins -> Moment-Range verwenden , um den Datumsbereich zu bearbeiten:
quelle
In den Versionen 2.9+ gibt es eine
isBetween
Funktion, die jedoch exklusiv ist:Es gibt eine umfassende Problemumgehung ...
x.isBetween(a, b) || x.isSame(a) || x.isSame(b)
... was logisch äquivalent zu ist
!(x.isBefore(a) || x.isAfter(b))
In Version 2.13 verfügt die
isBetween
Funktion über einen vierten optionalen Parameterinclusivity
.Verwenden Sie es so:
Weitere zu berücksichtigende Einheiten:
years, months, days, hours, minutes, seconds, milliseconds
Hinweis: Einheiten sind weiterhin optional. Verwenden Sie
null
als drittes Argument, um Einheiten zu ignorieren. In diesem Fall ist Millisekunden die Standardgranularität.Besuchen Sie die offiziellen Dokumente
quelle
x.isBetween(moment(a).subtract(1, 'day'), b)
scheint den Trick auch zu tun.!(x.isBefore(a) || x.isAfter(b))
exclusive
dasSie können verwenden
oder
Siehe hier: http://momentjs.com/docs/#/query/
quelle
isBetween
Kurzer Hinweis: erfordert Moment 2.13.0. momentjs.com/docs/#/query/is-betweenIch glaube das
funktioniert auch ...
quelle
Gute Nachrichten an alle, es gibt eine
isBetween
Funktion! Aktualisiere deine Bibliothek;)http://momentjs.com/docs/#/query/is-between/
quelle
isBetween
moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
Bitte verwenden Sie den 4. Parameter von moment.isBetween (Inklusivität). Beispiel:
quelle
ist logisch das gleiche wie
Dadurch sparen Sie einige Codezeilen und (in einigen Fällen) Methodenaufrufe.
Könnte einfacher sein, als ein ganzes Plugin zu ziehen, wenn Sie dies nur ein- oder zweimal tun möchten.
quelle
Gemäß Dokumentation von Moment js,
Das von Rob Dawson geschriebene Precise Range-Plugin kann verwendet werden, um genaue, für Menschen lesbare Darstellungen von Datums- / Zeitbereichen anzuzeigen. URL: http://codebox.org.uk/pages/moment-date-range-plugin
quelle