moment.js diff incorrect
Je suis en utilisant moment.js 1.7.0 d'essayer et de comparer la date d'aujourd'hui avec une autre date, mais le diff
fonction est de dire 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
Idées?
- j'ai la version 1.7.0, j'ai testé ton code et j'ai eu
DIFF: 0
- êtes-vous sûr que rien n'a été changé dans votre moment.js? - Je pense que c'est quelque chose à faire avec les fuseaux horaires ou utc/local. Si je me connecte le
.hours()
dereleaseDate
etnow
il produit des résultats différents pour moi. Si j'utilisevar now = moment().sod()
(docs) actuellement, il fonctionne comme prévu, mais je ne suis pas sûr de savoir comment beaucoup de j'espère que.
Vous devez vous connecter pour publier un commentaire.
Basé sur la la documentation (et test), moment.js crée wrappers autour de l'objet date. La déclaration:
crée un "moment" de l'objet qui, à son cœur a un nouvel objet Date à créé comme par
new Date()
, de sorte que les heures, les minutes et les secondes sera réglé à l'heure actuelle.La déclaration:
crée un moment d'objet qu'à son coeur a un nouvel objet Date à créé comme par
new Date(2012, 8, 25)
, où les heures, les minutes et les secondes seront tous remis à zéro pour le fuseau horaire local.moment.diff
renvoie une valeur basée sur la arrondie différence dans la ms entre les deux dates. Pour voir l'intégralité de la valeur, passertrue
en tant que troisième paramètre:Donc ça dépendra du moment de la journée lorsque le code est exécuté et le fuseau horaire local si
now.diff(releaseDate, 'days')
est zéro ou un, même lorsqu'ils sont exécutés sur le même jour.Si vous voulez comparer simplement les dates, puis utilisez:
qui permettra de définir l'heure à 00:00:00 dans le fuseau horaire local.
moment().sod()
élimine mon problème d'arrondi, testé à l'aide de la troisième paramètre que vous avez mentionné.sod
ne fonctionnera que jusqu'à la version 2, lorsque vous aurez à utiliserstartOf('day')
.RobG la réponse est correcte pour la question, donc cette réponse, c'est juste pour ceux à la recherche de la façon de comparer des dates dans momentjs.
J'ai tenté d'utiliser startOf ("jour") comme mentionné ci-dessus:
Cela ne fonctionne pas pour moi.
J'ai eu à utiliser isSame: