2016-08-17 3 views
0

Ich habe einen Moment Objekt wie unterWie kann ich den Zeitzonenwert von einem Momentobjekt erhalten?

enter image description here

, aus dem ich möchte den Zeitzonenwert „PDT“ extrahieren. Wie kann ich diesen Wert mit dem Moment bekommen?

ich habe

versucht
moment.tz(this.startDate.toString()).zoneAbbr(); 

aber das gibt einen Wert "UTC"

Irgendwelche Vorschläge?

+1

Sie sehen „PDT“ als Folge des Browsers eingebaut * Datum. prototype.toString * Methode, es hat nichts mit moment.js zu tun. Die Zeitzone hängt vollständig von den Einstellungen der Hostumgebung ab, und das Format der Zeichenfolge ist vollständig vom Browser abhängig. Einige haben möglicherweise überhaupt keine Zeitzone und andere können sie anders darstellen. – RobG

Antwort

0

Ich habe Angst, dass Sie nur diese bekommen .. Da dies die Funktion getZoneAbbr funktioniert.

function getZoneAbbr() { 
    return this._isUTC ? 'UTC' : ''; 
} 

Jetzt ist dies ein Problem. UTC ist, was man mit timeOffest verwenden kann, um zu bestimmen, in welcher Zeitzone Sie liegen. und nur eine Möglichkeit, eine Liste von Zeitzonennamen mit ihren Offset-Werten zu erstellen, dann vergleichen Sie, welchen Offset-Wert Sie erhalten. dann können Sie Ihre Zeitzone auswählen.

Auch die normale JavaScript-Datumsfunktion hat diese Unterstützung noch nicht. Sie müssen diese Offset- und Zeitzonennamen-Map selbst erstellen.

+0

Beachten Sie, dass der Zeitzonen-Offset vollständig von den Systemeinstellungen abhängig ist. Date-Objekte haben selbst keinen Offset. Es gibt viele Zeitzonen, die denselben Offset aber einen anderen Namen haben. Es gibt weder einen Standard für die Benennung von Zeitzonen noch für deren Abkürzungen.:-( – RobG

0

Sie könnten wan't die spezifische Zeitzone hinzuzufügen, die Sie in für das Datum sind, die Sie analysieren wie folgt vor:

moment.tz(moment.now(), 'America/New_York').zoneAbbr(); 
+0

Seine Rückkehr "UTC" anstelle von "PDT" – Joseph

0

Moment die z/zzformat Parameter musste Name Zeitzone zu erhalten abgekürzt, aber als doc sagt:

Hinweis: ab 1.6.0, das z/zz Format-Token s wurden von einfachen Momentobjekten veraltet. Read more about it here. Allerdings funktionieren sie tun funktionieren, wenn Sie eine bestimmte Zeitzone mit dem Moment-Timezone-Addon verwenden.

In der verknüpften Github Ausgabe moment developersuggestmoment.tz.guess() zu verwenden, wenn Moment Objekt zu schaffen gute Chancen zu haben, die Umgebung der Zeitzone zu bekommen.

hier ein Arbeitscodebeispiel, das Sie Namen abgekürzt Zeitzone verwenden können, erhalten:

var startDate = new Date(); 
 
var momObj = moment.tz(startDate, moment.tz.guess()); 
 
var zoneAbbr1 = momObj.zoneAbbr(); 
 
console.log(zoneAbbr1); 
 
var zoneAbbr2 = momObj.format('z') 
 
console.log(zoneAbbr2);
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.5/moment-timezone-with-data-2010-2020.min.js"></script>

+0

Für mich einfach zurück UTC – Joseph

+0

Ist mein Code-Schnipsel UTC für Sie drucken? Was ist das Ergebnis von 'moment.tz.guess()'? Führen Sie Code aus in der gleichen Umgebung Ihrer Frage? Vielleicht können Sie den Code zeigen, den Sie verwendet haben, um das Momentobjekt zu erstellen, das im Bildschirm angezeigt wird – VincenzoC

+0

Ich habe einfach ein Datumsfeld, das von API kommt. Ich konvertierte gerade zu Monet, das Moment (myDate) verwendet. Das Ergebnis ist was du auf dem Bild gesehen hast. – Joseph

Verwandte Themen