Wenn Sie die Zeitzone auf (UTC-07: 00) Mountain Time ändern und den folgenden Code ausführen, können Sie das Problem sehen, über das ich spreche.Formatieren des Datums in der angegebenen Zeitzone mit Moment Zeitzone
var a = moment('2009-11-01T06:00:00Z').tz('US/Mountain').format();
var b = moment('2009-11-01T06:00:00Z').tz('US/Mountain').format('YYYY-MM-DD HH:mm');
var c = moment('2009-10-31T23:00:00-07:00').format('YYYY-MM-DD HH:mm');
document.getElementById("a").innerHTML = "#1: " + a;
document.getElementById("b").innerHTML = "#2: " + b;
document.getElementById("c").innerHTML = "#3: " + c;
<script src="http://momentjs.com/downloads/moment.min.js"></script>
<script src="http://momentjs.com/downloads/moment-timezone-with-data-2010-2020.min.js"></script>
<div id="a"></div>
<div id="b"></div>
<div id="c"></div>
der Zeitpunkt erzeugt Offset oben durch Ausführen des Codes (# 1) korrekt ist. Aber sollte es nicht formatiert werden, ändern Sie den Wert auf "2009-11-01 00:00" (# 3) statt "2009-10-31 23:00" (# 2)?
Es scheint, als ob der Formatierer nur den Offset entfernt, anstatt ihn bei der Erstellung des formatierten Datums zu berücksichtigen. Ist das ein Fehler oder mache ich hier etwas falsch?
Vermutlich von Mountain Time Sie meinen GMT-07: 00. Während das Parsen von Strings durch den Date-Konstruktor nicht empfohlen wird, werden die meisten den String korrekt analysieren (aber einige werden es nicht tun). Wie auch immer, es scheint, dass Ihr System auf GMT-06: 00 eingestellt ist. Wenn Sie also das Datum drucken, wird standardmäßig die lokale Zeitzone (Host-System) verwendet, die eine Stunde später als die Eingabe ist. – RobG