J'utilise moment.js 1.7.0 pour essayer de comparer la date d'aujourd'hui avec une autre date mais la fonction diff
dit qu'ils sont à 1 jour d'intervalle pour une raison quelconque.
code :
var releaseDate = moment("2012-09-25");
var now = moment(); //Today is 2012-09-25, same as releaseDate
console.log("RELEASE: " + releaseDate.format("YYYY-MM-DD"));
console.log("NOW: " + now.format("YYYY-MM-DD"));
console.log("DIFF: " + now.diff(releaseDate, 'days'));
console :
RELEASE: 2012-09-25
NOW: 2012-09-25
DIFF: 1
Des idées?
Basé sur documentation (et de brefs tests), moment.js crée des wrappers autour des objets de date. La déclaration:
var now = moment();
crée un objet "moment" qui, en son cœur, a un nouvel objet Date créé comme par new Date()
, de sorte que les heures, les minutes et les secondes seront définies à l'heure actuelle.
La déclaration:
var releaseDate = moment("2012-09-25");
crée un objet Moment qui a en son cœur un nouvel objet Date créé comme par new Date(2012, 8, 25)
où les heures, minutes et secondes seront toutes mises à zéro pour le fuseau horaire local.
moment.diff
Renvoie une valeur basée sur la différence arrondie en ms entre les deux dates. Pour voir la valeur complète, passez true
comme troisième paramètre:
now.diff(releaseDate, 'days', true)
------------------------------^
Cela dépendra donc de l'heure de la journée où le code est exécuté et du fuseau horaire local, que now.diff(releaseDate, 'days')
soit zéro ou un, même lorsqu'il est exécuté à la même date locale.
Si vous souhaitez comparer uniquement les dates, utilisez:
var now = moment().startOf('day');
qui définira l'heure à 00:00:00 dans le fuseau horaire local.
La réponse de RobG est correcte pour la question, donc cette réponse est juste pour ceux qui cherchent à comparer les dates dans momentjs.
J'ai essayé d'utiliser startOf ('day') comme mentionné ci-dessus:
var compare = moment(dateA).startOf('day') === moment(dateB).startOf('day');
Cela n'a pas fonctionné pour moi.
J'ai dû utiliser isSame :
var compare = moment(dateA).isSame(dateB, 'day');