2017-09-14 1 views
0

Je suis en train d'utiliser Moment pour savoir si une date est inbetween 2 dates à l'aide du plug-in Moment Range: https://github.com/rotaready/moment-range#containsMomentjs Gamme soit faux

Pour une raison quelconque, mon code ci-dessous est toujours jeter Faux. Voici un exemple de la sortie:

START: 01/01/2015 00:00:00 FIN: 01/08/2017 00:00:00 FERMÉ: 08/06/2017 17:59 : 56 DÉCISION: false

Vous pouvez voir clairement ici que la date de fermeture se situe entre le début et la date de fin, mais on me dit qu'il ne

Voici mon code:

let end = moment('2017-08-01 00:00:00').format('YYYY-MM-DD HH:mm:ss') 
let start = moment('2015-01-01 00:00:00').format('YYYY-MM-DD HH:mm:ss') 
let closedDate = moment('2017-06-08 17:59:56').format('YYYY-MM-DD HH:mm:ss') 
let range = moment.range(start, end) 

console.log(`START:`,start,'END:',end,'CLOSED:',closedDate,'DECISION:',range.contains(closedDate)); 
+0

pourquoi ne pas utiliser la méthode [isBetween] (https://momentjs.com/docs/#/query/is-between/) ? Je connais ses moments purs, mais cela pourrait fonctionner – LakiGeri

+0

Wow, ok, j'ai totalement raté cette méthode en regardant leurs docs. Merci! – K20GH

+0

vous êtes les bienvenus! – LakiGeri

Répondre

1

J'ai réussi à résoudre ce problème en utilisant la fonction Within, et aussi changer la façon dont je formate le moment des objets

let end = moment('2017-08-01 00:00:00', 'YYYY-MM-DD HH:mm:ss') 
let start = moment('2015-01-01 00:00:00', 'YYYY-MM-DD HH:mm:ss') 
let closedDate = moment('2017-06-08 17:59:56','YYYY-MM-DD HH:mm:ss') 
let range = moment.range(start, end) 
console.log(`START:`,start,'END:',end,'CLOSED:',closedDate,'DECISION:',closedDate.within(range)); 
+0

moment.format() renvoie la chaîne et contient la date js, donc range.contains (closedDate.toDate()) fonctionnera avec ces nouvelles déclarations. –