web-dev-qa-db-fra.com

Comment comparer uniquement la date dans moment.js

Je suis nouveau sur moment.js. J'ai un objet de date et il a un peu de temps associé. Je veux juste vérifier si cette date est supérieure ou égale à la date du jour,en excluant l'heure lors de la comparaison.

 var dateToCompare = 2015-04-06T18:30:00.000Z

Je veux juste vérifier si dateToCompare est égal ou supérieur à la date d'aujourd'hui ..__ J'ai vérifié isSame of moment.js, mais il semble prendre de la ficelle et uniquement la partie date. Mais je ne veux pas convertir ma date en chaîne ni la manipuler davantage. Parce que je crains que javascript puisse faire quelque chose d'inattendu lors de la conversion de cette date en chaîne (comme ajouter l'offset ou dst, etc.), ou que je me trompe peut-être.

Exemple isSame () from docs

moment('2010-10-20').isSame('2010-10-20');

Aussi, je cherche quelque chose comme isSame () et isAfter () combinés en une seule déclaration.

J'ai besoin de comparer en utilisant moment.js seulement.Veuillez ne pas suggérer une comparaison de date en javascript simple.

69
NoobGeek

Les documents sont assez clairs que vous transmettez un second paramètre pour spécifier la granularité.

Si vous souhaitez limiter la granularité à une unité autre que les millisecondes, transmettez les unités en tant que deuxième paramètre.

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true

Lorsque le deuxième paramètre détermine la précision, et pas seulement une valeur à vérifier, l’utilisation de day vérifie l’année, le mois et le jour.

Dans votre cas, vous transmettez 'day' en tant que deuxième paramètre.

127
zzzzBov

En attendant, vous pouvez utiliser la méthode isSameOrAfter:

moment('2010-10-20').isSameOrAfter('2010-10-20', 'day');
24
sandrooco

Dans mon cas, j’ai fait le code suivant pour comparer deux dates, cela vous aidera ...

var date1 = "2010-10-20";
var date2 = "2010-10-20";
var time1 = moment(date1).format('YYYY-MM-DD');
var time2 = moment(date2).format('YYYY-MM-DD');
if(time2 > time1){
    console.log('date2 is Greter than date1');
}else if(time2 > time1){
    console.log('date2 is Less than date1');
}else{
    console.log('Both date are same');
}

Sortie:

Les deux dates sont identiques

0
Renish Gotecha