<p>moment().toISOString() Fehler, wenn Sie eine 18 übergeben, wird 17 zurückgegeben</p>

Erstellt am 23. Juli 2013  ·  6Kommentare  ·  Quelle: moment/moment

Dieses Problem scheint durch moment().toISOString() verursacht zu werden, das hier eingeführt wurde:

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

Ich könnte aber in der Konsole, wenn ich es tue:

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

Es wird zurückkehren:

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

Wenn ich nun toISOString( ) darauf

  n.toISOString()

das obige gibt den 17. statt den 18. zurück:

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

Hilfreichster Kommentar

Das könnte dann für dich funktionieren:

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

Oder

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

Wenn Sie sich nicht für die Zeitzone interessieren und nur die Uhrzeit anzeigen möchten.

Alle 6 Kommentare

Wie Sie sehen können, zeigt toISOString immer die Zeit in UTC an (zusätzlich zu einer bestimmten Anzeige).

@ichernev , ich verstehe deinen Standpunkt nicht ganz? Bedeutet das Anzeigen auf bestimmte Weise, wenn ich den 17. bestand, sollte ich den 18. erreichen? Wie komme ich am 18. vorbei und am 18. zurück? Danke.

Das könnte dann für dich funktionieren:

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

Oder

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

Wenn Sie sich nicht für die Zeitzone interessieren und nur die Uhrzeit anzeigen möchten.

@ichernev , vielen Dank.

Sie können den Parameter keepOffset von toISOString verwenden:

toISOString(keepOffset?: boolean): string;

=>

moment().toISOString(true)

Ist das wirklich richtig?

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

Ausgänge:

1969-12-31T23:00:00.000Z

Ich denke, die meisten Leute, die ein bestimmtes Datum eingeben und es als toISOString formatieren, würden erwarten, dass sich das Datum nicht ändert. Warum wird Offset nicht standardmäßig auf true gesetzt, wenn sich die Funktion dadurch vorhersehbarer verhält?

Ich weiß , dass Moment mit der nativen JavaScript Date toISOString-Funktion gemäß ES2015 konsistent ist, aber trotzdem fühlt sich dies einfach nicht wie erwartetes Verhalten an.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen