J'essaye de détecter avec Moment.js si une date donnée est entre deux dates. Depuis la version 2.0.0, Tim a ajouté isBefore()
et isAfter()
pour la comparaison des dates.
Puisqu'il n'y a pas de isBetween()
méthode, j'ai pensé que cela fonctionnerait:
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! :(");
}
Je suis convaincu qu'il doit y avoir une meilleure façon de faire cela. Des idées?
javascript
date
momentjs
Joel A. Villarreal Bertoldi
la source
la source
isBetween
||
isStart || isEnd
Réponses:
Vous pouvez utiliser l' un des plugins moment -> moment-range pour gérer la plage de dates:
la source
Dans les versions 2.9+, il existe une
isBetween
fonction, mais elle est exclusive:Il existe une solution de contournement inclusive ...
x.isBetween(a, b) || x.isSame(a) || x.isSame(b)
... ce qui équivaut logiquement à
!(x.isBefore(a) || x.isAfter(b))
Dans la version 2.13 de la
isBetween
fonction a un quatrième paramètre optionnel,inclusivity
.Utilisez-le comme ceci:
Plus d'unités à considérer:
years, months, days, hours, minutes, seconds, milliseconds
Remarque: les unités sont toujours en option. À utiliser
null
comme troisième argument pour ignorer les unités, auquel cas les millisecondes sont la granularité par défaut.Consultez la documentation officielle
la source
x.isBetween(moment(a).subtract(1, 'day'), b)
semble faire l'affaire aussi.!(x.isBefore(a) || x.isAfter(b))
exclusive
dire?Vous pouvez utiliser
ou
Voir ici: http://momentjs.com/docs/#/query/
la source
isBetween
nécessite le moment 2.13.0. momentjs.com/docs/#/query/is-betweenJe crois que
fonctionne aussi ...
la source
Bonne nouvelle à tous, il y a une
isBetween
fonction! Mettez à jour votre bibliothèque;)http://momentjs.com/docs/#/query/is-between/
la source
isBetween
n'est pas inclusifmoment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
Veuillez utiliser le 4ème paramètre de la fonction moment.isBetween (inclusivité). Exemple:
la source
est logiquement le même que
ce qui vous permet d'économiser quelques lignes de code et (dans certains cas) des appels de méthode.
Cela pourrait être plus facile que d'intégrer un plugin entier si vous ne voulez le faire qu'une ou deux fois.
la source
Selon la documentation du moment js,
Il existe un plugin Precise Range, écrit par Rob Dawson, qui peut être utilisé pour afficher des représentations exactes et lisibles par l'homme des plages de date / heure, url: http://codebox.org.uk/pages/moment-date-range-plugin
la source