Moment.js - Konvertieren von UTC in MEZ
Ich bin mit moment-timezone.js
um zu konvertieren UTC-Zeit zu America/New_York
über node.js. Ich mache das wie folgt:
var moment = require('moment-timezone');
moment.tz.add('America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0');
var now = new Date().toISOString();
now = moment(now).tz("America/New_York").toDate();
Dieser scheint gut zu funktionieren auf meinem lokalen Rechner, aber wenn ich es auf AWS Lambda, die now
Zeit wird noch ausgegeben werden als UTC.
Mache ich etwas falsch hier? Ich wirklich nicht wollen, zu haben, um die Nutzung einer API nur, um die genaue New Yorker Zeit. Die Sommerzeit ist hier die größte Herausforderung. Danke!
- Welche Zeitzone ist Ihre lokale Maschine verwenden? Wo ist der code, der die Ausgabe des Datum? Ich bin mir ziemlich sicher, sobald Sie rufen toDate() Sie sind, verlieren Sie keine Zeitzone Informationen.
- Ja du hast Recht, Berufung toDate() verwendet die ursprüngliche, vor-moment date-Objekt. Ich dachte, die Lösung, und post ein bisschen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Weg, ich dachte mir, diese war zu tun:
Möchte ich darauf hinweisen, obwohl, dass ich hoffe, dass jemand retten die Tage Zeit dies belastet mich für. Mein Hauptproblem war, dass Amazon Lambda war die Zeit in UTC, egal, was ich Tat. Die Fehlerbehebung für dieses Problem war einfach die Auswahl der Knoten TZ environment variable:
America/New_York
, @Shamseer aber nicht ein statischer offset wie-0500
(wie pro oben).Installieren Sie zuerst moment timezone und installieren Sie alle, die Zeitzonen durch die Verwendung
timezone-with-data.js
oder speziell nur laden, die Zeitzonen, die Sie brauchenWenn Sie ein Datum, das Sie wissen, ist in UTC und wollen es zu konvertieren, um Eastern time, verwenden Sie die
moment.utc()
Funktion tatsächlich zu analysieren UTC datestring. Dann, wenn Sie anrufen.tz()
wird es richtig konvertieren:Wenn Sie einfach das tun
moment(date_string).tz("America/New_York")
die Zeit wird analysiert, in Ihre lokale Zeitzone, standardmäßig, und es wird nicht das Datum einzustellen.