La Comparaison De Fois À L'Aide D'Moment.js
J'ai été jouer avec Moment.js et j'ai rencontré un problème. J'ai essayé de déterminer si une date donnée est dans le passé ou dans l'avenir. Les dates sont stockées en tant que Les timestamps Unix. Donc, quand je suis en comparant les dates futures avec les dates de cours, ça marche ok, mais ce n'est pas de déclenchement pour les dates antérieures. L'exemple de code ci-dessous et un le violon est ici.
var pastUnixTime = '1348812970'; //some time in the past
var futureUnixTime = '1352350231';
if (moment.unix(futureUnixTime).format('DD MM YYYY') > moment().format('DD MM YYYY')) {
console.log('yay');
}
if (moment.unix(pastUnixTime).format('DD MM YYYY') < moment().format('DD MM YYYY')) {
console.log('yay 2');
}
Le code ci-dessus journaux yay
ne pas yay 2
. Quelqu'un peut-il m'expliquer pourquoi il n'est pas de journalisation yay 2
?
Vous devez vous connecter pour publier un commentaire.
Vous avez réellement n'avez pas besoin d'utiliser
.format()
à tous pour cette.Tout d'abord, l'horodatage doivent être des nombres, pas des chaînes de caractères (ex,
var pastUnixTime = 1348812970;
), et la seconde, vous pouvez les comparer directement:Maintenant, la raison pour laquelle le code est en échec, c'est que lorsque vous comparez les
DD MM YYYY
les chaînes, ils sont comparés de manière lexicographique... Et les journées sont première! Ainsi, la chaîne"01 01 2000"
sera toujours "moins de""31 12 1900"
. Si vous voulais pour comparer des chaînes, vous pouvez utiliserYYYY MM DD
format — de cette façon,"2000 01 01"
sera correctement "plus grand que""1900 12 31"
. Mais il n'y a pas de raison de le faire - les horodatages sont beaucoup plus simple.Enfin, une remarque: vous n'avez pas besoin d'utiliser le
.unix()
- les instances demoment()
permettra de comparer judicieusement:.startOf("day")
:moment.unix(…).startOf("day") < moment().startOf("day")
. OMI, le dernier est beaucoup plus clair, car il rend votre intention très évident..unix()
.moment()
met en œuvre unvalueOf()
de la méthode, JavaScript utilise lorsqu'on fait des comparaisons.