2016-05-02 6 views
1

Einige meiner Benutzer melden unterschiedliche Ausgaben, versetzt um einen Tag.moment.js um einen Tag versetzt Ausgabe

Code:

var call=[1451084400000,1451170800000,1451257200000,1451343600000,1451430000000,1451516400000,1451602800000,1451689200000,1451775600000] 

    var arrayLength = call.length; 
    for (var i = 0; i < arrayLength; i++) { 
    document.getElementById('output').innerHTML += moment(call[i],"x").format("YYYY-MM-DD")+"<br>" 
    } 

Erwartetes Ergebnis:

2015-12-26 
2015-12-27 
2015-12-28 
2015-12-29 
2015-12-30 
2015-12-31 
2016-01-01 
2016-01-02 
2016-01-03 

Ausgabe:

2015-12-25 
2015-12-26 
2015-12-27 
2015-12-28 
2015-12-29 
2015-12-30 
2015-12-31 
2016-01-01 
2016-01-02 

Irgendwelche Ideen, warum?

+0

Mehr als wahrscheinlich im Zusammenhang mit Zeitzone Offsets. Wenn Sie die tatsächliche Anzahl von Millisekunden protokollieren können, würden Sie mehr als wahrscheinlich sehen, dass die Werte identisch sind. Sie treffen nur Tagesgrenzen basierend auf der Zeitzone. – ArcSine

+0

Kein genaues Duplikat (es verwendet nicht moment.js), aber es ist das gleiche Problem: [* Warum wird das neue Datum() einen Tag entfernen? *] (Http://stackoverflow.com/questions/36698286/why- ist-neues-Datum-Entfernen-ein-Tag-Javascript). – RobG

+2

Siehe auch http://stackoverflow.com/questions/36165182/strange-behavior-formatting-moment-js-date/36168554#36168554. Dies ist eine momentspezifische Frage/Antwort. Im Grunde willst du moment.utc() –

Antwort

0

Versuchen Sie, in die gewünschte Zeitzone zu konvertieren. Für London sollte die Zeitzone so aussehen:

date.clone().tz("Europe/London"); 
+0

1. Ich möchte, dass dies universell ist 2. Benutzer sind in der tz + 3/+ 2 Stunden, nicht ganzen Tag –

+0

Manchmal fügt es einen ganzen Tag nur wegen eines Unterschieds von wenigen Stunden. Vergessen Sie nicht, die Zeitzone zu definieren und Sie werden nie Probleme haben. –

+0

ok, aber TZ für jedes Datum hinzufügen, und ich habe viele von ihnen, verlangsamt das Skript viel –

Verwandte Themen