2017-09-01 4 views
0

Wir übergeben ein JSON-Datum in Moment Timezone JS. Wir legen unsere Zeitzone im Aufruf von moment.tz() fest, um die Zeitzone anzugeben, in der die Uhrzeit für alle angezeigt werden soll, unabhängig davon, wie die lokale Zeitzone des Benutzers ist. Unser Problem ist, dass ich es jetzt wieder in das Standard-Javascript-Zeitformat konvertieren möchte, aber keep the moment.tz() angegebene Zeitzone. Ich habe versucht, das moment.tz() in ein neues Date() einzufügen und die .toDate() anzuhängen, aber das lokale Datum wird nur vom Computer des Benutzers ausgegeben (ich habe die Zeitzone meines Rechners auf etwas anderes als mein eigenes gesetzt, um dies zu testen). Ich möchte, dass ich das Datum und die Uhrzeit der spezifischen Zeitzone angeben, die ich als Zeitangabe in Moment angegeben habe.Moment Zeitzone JS, zurück zum Javascript Datum

Beispiel für meine Ausgabe.

//1504897200000 = 1:00 pm on Friday September 8, 2017 
    var eventTimeDate = moment.tz(1504897200000, "America/Denver").format('h:mm A'); 

Jetzt möchte ich meine JSON Datum nehmen und es wieder auf den Standard Javascript-Format zu konvertieren, das sein sollte:

Fri Sep 08 2017 13:00:00 GMT-0600 (Mountain Daylight Time) 

Aber wenn ich auf meinem lokalen Computer die Zeitzone ändern, zeigt es, wie die oben Zeitzone meines Computers nicht die Zeitzone einstellen I in Moment.js

So setzen, wenn ich meine Zeitzone nach Dublin versucht stellen Sie den Moment Zeit mit der moment.tz() -Methode

zu konvertieren

Es gibt:

Fri Sep 08 2017 20:00:00 GMT+0100 (GMT Daylight Time) 

Was nicht das "Amerika/Denver" passt Einstellung ich im Moment JS haben. Ich würde lke es das sein:

Fri Sep 08 2017 13:00:00 GMT-0600 (Mountain Daylight Time) 

Alle Ideen, wie es zu dem langen Format konvertieren zurück, aber noch halten den Moment JS Zeitzone eingestellt?

Hier ist meine JSFiddle:

https://jsfiddle.net/549La2ct/

+1

Sie brauchen nur die Zeichenfolge formatiert zurück, indem Sie .t oString()? Wie hier https://jsfiddle.net/4wby7f07/ Oder müssen Sie ein JavaScript Date Object analysieren? – DevDig

Antwort

2

Wenn Sie toDate() verwenden, wird es ein JavaScript-Date-Objekt zu erstellen, und es bietet keine Möglichkeit, die Ausgabe, wie Sie wollen zu steuern.

Wenn Sie eine Zeichenfolge in das gewünschte Format, können Sie format() Methode, mit einem addition suggested in the docs verwenden, um die Zeitzone langen Namen zu erhalten:

var abbrs = { 
    EST : 'Eastern Standard Time', 
    EDT : 'Eastern Daylight Time', 
    CST : 'Central Standard Time', 
    CDT : 'Central Daylight Time', 
    MST : 'Mountain Standard Time', 
    MDT : 'Mountain Daylight Time', 
    PST : 'Pacific Standard Time', 
    PDT : 'Pacific Daylight Time', 
}; 

moment.fn.zoneName = function() { 
    var abbr = this.zoneAbbr(); 
    return abbrs[abbr] || abbr; 
}; 

var str = moment.tz(1504897200000, "America/Denver").format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ (zz)'); 

Die Variable str den Wert haben:

Fr. Sep 08 2017 13:00:00 GMT-0600 (Mountain Daylight Time)

+1

das war die route, die ich unterwegs war. Ich brauchte nur diesen letzten Teil für die GMT und den zoneName. Danke, ich werde das benutzen. Sehr geschätzt. – ClosDesign

Verwandte Themen