2016-03-29 8 views
2

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?

+0

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

Antwort

3

Sie verwenden moment-timezone-with-data-2010-2020.min.js mit Jahr 2009. Sie sollten Moment Timezone zu moment-timezone-with-data.min.js ändern. Siehe Arbeits Code-Schnipsel:

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.min.js"></script> 
 
<div id="a"></div> 
 
<div id="b"></div> 
 
<div id="c"></div>