Moment .isAfter ne renvoyant pas correctement
J'ai une chaîne qui est stockée dans l'heure UTC. Je suis en train de voir si ce moment est après l'heure UTC actuelle. Je suis à l'aide de momentjs et la isAfter() la méthode renvoie la valeur incorrecte lorsqu'il est à seulement 1 heure de décalage.
La active_time variable arrive à 15:00 utc. Le current_time est fixé à 16:00 utc. Donc, je pense que active_time.isAfter(current_time)
doit retourner false
mais il est de retour true
. Comment puis-je la faire revenir false
?
jsFiddle lien: http://jsfiddle.net/Ln1bz1nx/
Code:
//String is already in utc time
var active_time = moment('2015-06-04T15:00Z', 'YYYY-MM-DD[T]HH:mm[Z]');
//Convert current time to moment object with utc time
var current_time = moment( moment('2015-06-04T16:00Z').utc().format('YYYY-MM-DD[T]HH:mm[Z]') );
console.log('active_time =',active_time);
console.log('current_time =',current_time);
console.log( active_time.isAfter(current_time) ); //Why does this return true?
Retourne
Bizarre. C'est toujours
je ne suis pas d'obtenir des résultats fiables à partir de isAfter. Si j'utilise .unix() sur les deux moments que je peux comparer, mais sinon, si ils sont dans des fuseaux horaires différents ou provenir de sources différentes, il ne fonctionne pas de manière fiable.
false
pour moi: jsfiddle.net/Ln1bz1nx/3Bizarre. C'est toujours
true
pour moi. Je suis sur un Macbook, je ne sais pas si ça pourrait avoir quelque chose à faire avec elle.je ne suis pas d'obtenir des résultats fiables à partir de isAfter. Si j'utilise .unix() sur les deux moments que je peux comparer, mais sinon, si ils sont dans des fuseaux horaires différents ou provenir de sources différentes, il ne fonctionne pas de manière fiable.
OriginalL'auteur Mdd | 2015-06-04
Vous devez vous connecter pour publier un commentaire.
Si vos dates sont ISO8601 formaté ou timestamp, n'utilisez pas le moment.isAfter. C'est 150 fois plus lent que de comparer 2 dates d'objets : http://jsperf.com/momentjs-isafter-performance
OriginalL'auteur Pierre Inglebert
Regarder la
toDate
méthode pour voir ce que l'interne js date:Va dépendre de sur quel fuseau horaire vous êtes dans
YYYY-MM-DD[T]HH:mm[Z]
déjà en UTC par rapport à mon fuseau horaire.L'utilisation moment.utc() pour créer de la date comme date UTC. Voir momentjs.com/docs/#/parsing/utc/
OriginalL'auteur dave