140 votes

Moment.js : Date entre les dates

J'essaie de détecter avec Moment.js si une date donnée se situe entre deux dates. Depuis la version 2.0.0, Tim a ajouté isBefore() y isAfter() pour la comparaison des dates.

Puisqu'il n'y a pas isBetween() méthode, j'ai pensé que ça pourrait marcher :

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 un meilleur moyen de faire ça. Des idées ?

11voto

Veuillez utiliser le 4ème paramètre de la fonction moment.isBetween (inclusivité). Exemple :

var startDate = moment("15/02/2013", "DD/MM/YYYY");
var endDate = moment("20/02/2013", "DD/MM/YYYY");

var testDate = moment("15/02/2013", "DD/MM/YYYY");

testDate.isBetween(startDate, endDate, 'days', true); // will return true
testDate.isBetween(startDate, endDate, 'days', false); // will return false

7voto

MajkelTheITGuy Points 39
if (date.isBefore(endDate) 
 && date.isAfter(startDate) 
 || (date.isSame(startDate) || date.isSame(endDate))

est logiquement la même chose que

if (!(date.isBefore(startDate) || date.isAfter(endDate)))

ce qui vous permet d'économiser quelques lignes de code et (dans certains cas) des appels de méthode.

C'est peut-être plus facile que de faire appel à un plugin complet si vous ne voulez le faire qu'une ou deux fois.

1voto

Mohammed Safeer Points 1533

Conformément à la documentation de 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 de plages de dates/heures, d'url : http://codebox.org.uk/pages/moment-date-range-plugin

moment("2014-01-01 12:00:00").preciseDiff("2015-03-04 16:05:06");
// 1 year 2 months 3 days 4 hours 5 minutes 6 seconds

moment.preciseDiff("2014-01-01 12:00:00", "2014-04-20 12:00:00");
// 3 months 19 days

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X