Moment: startOf('day') me donne hier

Créé le 3 avr. 2016  ·  3Commentaires  ·  Source: moment/moment

Exécution du code suivant dans Chrome Version 49.0.2623.110 m
image
Peut-être lié au #2982 ?

Commentaire le plus utile

Étant donné que vous utilisez la fonction moment() pour construire votre date, moment suppose que vous gérez une date locale. Ainsi, la fonction .startOf() vous déplace au début de votre date locale.
.toISOString() cependant, génère une date UTC, comme indiqué par le Z à la fin des chaînes.

D'après votre profil github, il semble que vous soyez en Israël. Donc, en ajustant pour le fuseau horaire Asie/Jérusalem et en mettant tout en code :

//the time now in Jerusalem
moment().format()
"2016-04-03T14:48:10+03:00"

//start of day in Jersualem
moment().startOf('day').format()
"2016-04-03T00:00:00+03:00"

//start of day as ISO string is three hours before start of day in Jerusalem
moment().startOf('day').toISOString()
"2016-04-02T21:00:00.000Z"

Vous devez soit travailler entièrement en heure locale et utiliser .format() pour obtenir le résultat souhaité, soit travailler entièrement en UTC.

Cette section de la documentation peut être utile :
http://momentjs.com/guides/#/parsing/local-utc-zone/

Tous les 3 commentaires

Étant donné que vous utilisez la fonction moment() pour construire votre date, moment suppose que vous gérez une date locale. Ainsi, la fonction .startOf() vous déplace au début de votre date locale.
.toISOString() cependant, génère une date UTC, comme indiqué par le Z à la fin des chaînes.

D'après votre profil github, il semble que vous soyez en Israël. Donc, en ajustant pour le fuseau horaire Asie/Jérusalem et en mettant tout en code :

//the time now in Jerusalem
moment().format()
"2016-04-03T14:48:10+03:00"

//start of day in Jersualem
moment().startOf('day').format()
"2016-04-03T00:00:00+03:00"

//start of day as ISO string is three hours before start of day in Jerusalem
moment().startOf('day').toISOString()
"2016-04-02T21:00:00.000Z"

Vous devez soit travailler entièrement en heure locale et utiliser .format() pour obtenir le résultat souhaité, soit travailler entièrement en UTC.

Cette section de la documentation peut être utile :
http://momentjs.com/guides/#/parsing/local-utc-zone/

:face-paume:

Merci pour l'explication approfondie.

Je pense avoir expliqué celui-ci au moins deux fois cette semaine entre ici et Stack Overflow. Vous n'êtes pas la seule personne à être confus. Je vais mettre à jour les docs pour rendre la partie UTC un peu plus claire.

Cette page vous a été utile?
0 / 5 - 0 notes