Moment: Beim Erstellen eines UTC-Datums mit Moment.js tut der zone()-Setter nichts (2.8.3)

Erstellt am 11. Sept. 2014  ·  3Kommentare  ·  Quelle: moment/moment

Ich erhalte genau das gleiche Moment-Objekt, nachdem ich zone(-1) ausgeführt habe, wie wenn ich es nicht ausführe. Beispiel:

console.log(moment().utc().toDate());
console.log(moment().utc().zone(-1).toDate());

Ich würde erwarten, dass dies das Date-Objekt entsprechend dem Zeitzonen-Offset anpasst, aber es tut ... na ja, nichts.

Hilfreichster Kommentar

@rquinlivan Ich habe etwas tiefer gegraben. Sie können ein zweites Argument an zone() , damit die Uhrzeit der Wanduhr gleich bleibt:

> moment().format()
'2014-09-15T16:59:30-04:00'
> moment().zone(-1).format()
'2014-09-15T21:59:35+01:00'
> moment().zone(-1, true).format()
'2014-09-15T16:59:38+01:00'

Sie werden also am Ende haben:

> moment().toDate()
Mon Sep 15 2014 17:00:16 GMT-0400 (EDT)
> moment().zone(-1, true).toDate()
Mon Sep 15 2014 12:00:19 GMT-0400 (EDT)

Was ich glaube, ist das, was Sie wollen.

FWIW, jeder wird Ihnen mit Open Source schneller helfen, wenn Sie sich einer Funktionslücke mit "Hey, ich brauche diese Funktion, wie kann ich helfen?" nähern. anstatt wie du.

Alle 3 Kommentare

Moment verfolgt Instanzen in der Zeit (dh Millisekunden seit 1970 UTC). Was Sie tun, wenn Sie utc() oder zone() sagen, ändern Sie, wie diese Zeit _ausgedrückt_ wird (dh wir sagen "9:00" in EST, aber "6:00" in PST , aber es ist die gleiche Zeit). Wenn Sie es also wieder in ein Datum konvertieren, werden die Metadaten "Sie sollten Datumsangaben anders drucken" gelöscht. Es ist immer noch die gleiche Zeit.

Es hört sich so an, als ob Sie die tatsächliche Uhrzeit ändern möchten? Wir haben jedoch keine Funktion "die Zeit ändern, damit sie in dieser anderen Zone genauso angezeigt wird", aber wir haben sie besprochen (oder haben wir, @ichernev?)

Ja, ich möchte die tatsächliche Uhrzeit ändern. Dies ist ziemlich einschränkend und ich werde wahrscheinlich die Verwendung dieser Bibliothek aufgrund dieser Einschränkung einstellen müssen.

@rquinlivan Ich habe etwas tiefer gegraben. Sie können ein zweites Argument an zone() , damit die Uhrzeit der Wanduhr gleich bleibt:

> moment().format()
'2014-09-15T16:59:30-04:00'
> moment().zone(-1).format()
'2014-09-15T21:59:35+01:00'
> moment().zone(-1, true).format()
'2014-09-15T16:59:38+01:00'

Sie werden also am Ende haben:

> moment().toDate()
Mon Sep 15 2014 17:00:16 GMT-0400 (EDT)
> moment().zone(-1, true).toDate()
Mon Sep 15 2014 12:00:19 GMT-0400 (EDT)

Was ich glaube, ist das, was Sie wollen.

FWIW, jeder wird Ihnen mit Open Source schneller helfen, wenn Sie sich einer Funktionslücke mit "Hey, ich brauche diese Funktion, wie kann ich helfen?" nähern. anstatt wie du.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen