2017-03-09 3 views
1

Diese Meteor-Client-Methode versucht, Thu Mar 09 2017 00:00:00 GMT+1100 (AEDT) zurückzugeben, aber sie gibt stattdessen Thu Mar 09 2017 11:00:00 GMT+1100 (AEDT) zurück.
Wie kann es behoben werden? thxDate.UTC konnte nicht korrekt angezeigt werden

dateToISO: (date) => { // date format in YYYY-MM-DD like "2017-03-09" 
     const dArr = date.split('-'); 
     return new Date(Date.UTC(parseInt(dArr[0]), parseInt(dArr[1]) - 1, parseInt(dArr[2]), 0, 0, 0, 0)); 
    } 

Antwort

0

Nun, wie ich versuche, es zu reproduzieren, das scheint tatsächlich wie ein Fehler in der Date.UTC Funktion. zu tun

Ich habe versucht:

console.log("Unmanipulate: " + new Date(Date.UTC(97, 4, 13, 0, 0))); 
console.log("Manipulate: " + new Date(Date.UTC(97, 4, 13, -3, 0))); 

Welche zurück:

Unmanipulate: Tue May 13 1997 03:00:00 GMT+0300 (IDT) 
Manipulate: Tue May 13 1997 00:00:00 GMT+0300 (IDT) 

aussehen wie die Zeitzone ist auf die Stunde params passieren, was wirklich seltsam ist. vielleicht vermisse ich etwas.

Sie können mehr über die Spezifikation dieser Funktion here lesen.

würde ich empfehlen die Verwendung Moment.js, die es wirklich einfach machen mit Terminen in js zu beschäftigen, wie folgt aus:

function dateToISO (date) { 
    return moment(date).utc().format(); 
} 
+0

Ich habe Moment.js installiert ist, können Sie die Antwort geben es mit? thx –

+0

Ich aktualisiere meine Frage, sieh es dir an und sag mir, ob es für dich funktioniert. –