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"
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.
Commentaire le plus utile
Cela pourrait fonctionner pour vous alors:
Ou
Si vous ne vous souciez pas du fuseau horaire et que vous souhaitez simplement afficher l'heure.