<p>bogue moment().toISOString(), si vous passez dans un 18ème, il renvoie le 17ème</p>

Créé le 23 juil. 2013  ·  6Commentaires  ·  Source: moment/moment

Ce problème semble être causé par moment().toISOString() introduit ici :

http://momentjs.com/docs/#/displaying/as -iso-string/
moment().toISOString();

Je pourrais mais dans la console si je fais:

    n = moment.utc(new Date('2013-07-18T00:00:00+01:00'))

Il reviendra :

 Thu Jul 18 2013 00:00:00 GMT+0100 (GMT Daylight Time)

Maintenant, si j'appelle toISOString( ), la date devient soudainement le 17 :

  n.toISOString()

ce qui précède renverra le 17 au lieu du 18 :

  "2013-07-17T23:00:00.000Z"

Commentaire le plus utile

Cela pourrait fonctionner pour vous alors:

> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ')
'2013-07-23T14:54:20.176-0700'

Ou

> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSS')
'2013-07-23T14:54:20.176'

Si vous ne vous souciez pas du fuseau horaire et que vous souhaitez simplement afficher l'heure.

Tous les 6 commentaires

Comme vous pouvez le voir toISOString affiche toujours l'heure en UTC (en plus de l'afficher d'une manière spécifique).

@ichernev , je ne comprends pas tout à fait votre point de vue ? Est-ce que l'affichage de manière spécifique signifie que lorsque je passe en 17e, je devrais obtenir 18e ? Comment passer le 18e et revenir 18e ? Merci.

Cela pourrait fonctionner pour vous alors:

> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ')
'2013-07-23T14:54:20.176-0700'

Ou

> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSS')
'2013-07-23T14:54:20.176'

Si vous ne vous souciez pas du fuseau horaire et que vous souhaitez simplement afficher l'heure.

@ichernev , merci beaucoup.

Vous pouvez utiliser le paramètre keepOffset de toISOString :

toISOString(keepOffset?: booléen): chaîne;

=>

moment().toISOString(true)

Est-ce vraiment vrai ?

moment('1970-01-01').toISOString()

les sorties:

1969-12-31T23:00:00.000Z

Je pense que la plupart des gens qui passent une date à un moment spécifique et la formatent en tant que toISOString s'attendraient à ce que la date ne change pas. Pourquoi keepOffset n'est-il pas défini par défaut sur true si cela permet à la fonction de se comporter de manière plus prévisible ?

Je sais que le moment est cohérent avec la fonction native JavaScript Date toISOString selon ES2015, mais même ainsi, cela ne ressemble tout simplement pas au comportement attendu.

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